new version

This commit is contained in:
Andreas Gammelgaard Damsbo 2026-02-28 12:08:01 +01:00
commit fcc9443cea
No known key found for this signature in database
20 changed files with 159 additions and 141 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.2.2
version: 26.3.1
doi: 10.5281/zenodo.14527429
identifiers:
- type: url

View file

@ -1,6 +1,6 @@
Package: FreesearchR
Title: Easy data analysis for clinicians
Version: 26.2.2
Version: 26.3.1
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,3 +1,11 @@
# 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.2.2'
app_version <- function()'26.3.1'

View file

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

Binary file not shown.

View file

@ -11,11 +11,11 @@
|collate |en_US.UTF-8 |
|ctype |en_US.UTF-8 |
|tz |Europe/Copenhagen |
|date |2026-02-23 |
|date |2026-02-28 |
|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.2.2.260223 |
|FreesearchR |26.3.1.260228 |
--------------------------------------------------------------------------------
@ -26,8 +26,6 @@
|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) |
@ -46,7 +44,6 @@
|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) |
@ -56,6 +53,7 @@
|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) |
@ -65,7 +63,6 @@
|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) |
@ -88,10 +85,11 @@
|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.2.2 |NA |NA |
|FreesearchR |26.3.1 |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) |
@ -110,24 +108,23 @@
|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) |
@ -167,7 +164,6 @@
|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) |
@ -200,7 +196,6 @@
|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) |
@ -218,12 +213,13 @@
|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) |
@ -234,5 +230,4 @@
|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//Rtmpp0JgLn/file73e17b926733.R
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpDLoQCo/file14ced11821c07.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.2.2'
app_version <- function()'26.3.1'
########
@ -4524,7 +4524,7 @@ data_types <- function() {
#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R
########
hosted_version <- function()'v26.2.2-260223'
hosted_version <- function()'v26.3.1-260228'
########
@ -10469,9 +10469,21 @@ custom_theme <- function(...,
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
# 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')"
),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),
@ -10664,11 +10676,12 @@ 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::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
),
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::br(),
shiny::br(),
shiny::conditionalPanel(
@ -13496,16 +13509,6 @@ 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")
@ -13544,7 +13547,6 @@ server <- function(input, output, session) {
# session$setCurrentTheme(bs_theme_update(theme = custom_theme(version = 5, bg = "#000",fg="#fff")))
# })
##############################################################################
#########
######### Setting reactive values
@ -13637,16 +13639,33 @@ 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"),
i18n$t("Local or sample data")
env_label
# 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"),
@ -13659,12 +13678,10 @@ server <- function(input, output, session) {
target = "acc_pan_mis")
})
output$redcap_warning <- shiny::renderUI({
rv_alerts$redcap_alert
})
##############################################################################
#########
######### Data import section
@ -13798,7 +13815,6 @@ server <- function(input, output, session) {
rv$data_original <- temp_data |>
default_parsing()
}
},
ignoreNULL = FALSE
)
@ -13861,14 +13877,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
@ -13893,7 +13909,6 @@ server <- function(input, output, session) {
}
}, ignoreNULL = TRUE)
shiny::observeEvent(input$data_reset, {
shinyWidgets::ask_confirmation(
cancelOnDismiss = TRUE,
@ -14216,7 +14231,6 @@ server <- function(input, output, session) {
rv$list$table1 <- NULL
})
##############################################################################
#########
######### Code export
@ -14280,19 +14294,18 @@ 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
@ -14305,7 +14318,8 @@ 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")])
)
})
@ -14324,7 +14338,6 @@ server <- function(input, output, session) {
# )
# })
output$detail_level <- shiny::renderUI({
shiny::radioButtons(
inputId = "detail_level",
@ -14336,14 +14349,12 @@ server <- function(input, output, session) {
)
})
##############################################################################
#########
######### Descriptive evaluations
#########
##############################################################################
output$data_info_nochar <- shiny::renderUI({
shiny::req(rv$list$data)
data_description(rv$list$data,
@ -14362,14 +14373,12 @@ 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",
@ -14410,7 +14419,6 @@ server <- function(input, output, session) {
# }
# )
rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})")
})
@ -14451,12 +14459,9 @@ 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()
@ -14465,7 +14470,6 @@ server <- function(input, output, session) {
# mcar_validate(data=rv$missings()[["_data"]],outcome = input$missings_var)
# })
##############################################################################
#########
######### Data visuals

View file

@ -314,16 +314,17 @@
"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","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."
"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."
"Data successfully imported!","Data successfully imported!"
"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."
"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"

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 Modify factor levels Ændr kategoriske niveauer
318 Reorder or rename the levels of factor/categorical variables. Reorder or rename the levels of factor/categorical variables. Ændr navn eller rækkefølge på kategorisk variabel.
319 Maximum number of observations: Maximum number of observations: Maximale antal observationer:
320 setting to 0 includes all setting to 0 includes all angiv 0 for at inkludere alle
321 Select a dataset from your environment or sample dataset from a package. 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.
322 Select a sample dataset from a package. Select a sample dataset from a package. Vælg et træningsdatasæt.
323 Data ready to be imported! Data ready to be imported! Data er klar til at blive importeret!
324 Data has %s obs. of %s variables. Data has %s obs. of %s variables. Data har %s obs. på %s variabler.
325 Data successfully imported! Data successfully imported!
326 Click to see data Click to see data Klik for at se data
327 No data present. No data present. Ingen data tilstede.
328 You have provided a complete dataset with no missing values. You have provided a complete dataset with no missing values. Data er uden manglende observationer.
329 Start by loading data. Start by loading data. Start med at vælge data.
330 Sample data Træningsdata

View file

@ -327,3 +327,4 @@
"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.
330 Sample data Sample data

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -1,7 +1,7 @@
########
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//Rtmpp0JgLn/file73e17f71b1a4.R
#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpDLoQCo/file14ced66223522.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.2.2'
app_version <- function()'26.3.1'
########
@ -4524,7 +4524,7 @@ data_types <- function() {
#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R
########
hosted_version <- function()'v26.2.2-260223'
hosted_version <- function()'v26.3.1-260228'
########
@ -10469,9 +10469,21 @@ custom_theme <- function(...,
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
# 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')"
),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),
@ -10664,11 +10676,12 @@ 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::helpText(
i18n$t(
"Upload a file, get data directly from REDCap or use local or sample data."
)
),
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::br(),
shiny::br(),
shiny::conditionalPanel(
@ -13496,16 +13509,6 @@ 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")
@ -13544,7 +13547,6 @@ server <- function(input, output, session) {
# session$setCurrentTheme(bs_theme_update(theme = custom_theme(version = 5, bg = "#000",fg="#fff")))
# })
##############################################################################
#########
######### Setting reactive values
@ -13637,16 +13639,33 @@ 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"),
i18n$t("Local or sample data")
env_label
# 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"),
@ -13659,12 +13678,10 @@ server <- function(input, output, session) {
target = "acc_pan_mis")
})
output$redcap_warning <- shiny::renderUI({
rv_alerts$redcap_alert
})
##############################################################################
#########
######### Data import section
@ -13798,7 +13815,6 @@ server <- function(input, output, session) {
rv$data_original <- temp_data |>
default_parsing()
}
},
ignoreNULL = FALSE
)
@ -13861,14 +13877,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
@ -13893,7 +13909,6 @@ server <- function(input, output, session) {
}
}, ignoreNULL = TRUE)
shiny::observeEvent(input$data_reset, {
shinyWidgets::ask_confirmation(
cancelOnDismiss = TRUE,
@ -14216,7 +14231,6 @@ server <- function(input, output, session) {
rv$list$table1 <- NULL
})
##############################################################################
#########
######### Code export
@ -14280,19 +14294,18 @@ 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
@ -14305,7 +14318,8 @@ 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")])
)
})
@ -14324,7 +14338,6 @@ server <- function(input, output, session) {
# )
# })
output$detail_level <- shiny::renderUI({
shiny::radioButtons(
inputId = "detail_level",
@ -14336,14 +14349,12 @@ server <- function(input, output, session) {
)
})
##############################################################################
#########
######### Descriptive evaluations
#########
##############################################################################
output$data_info_nochar <- shiny::renderUI({
shiny::req(rv$list$data)
data_description(rv$list$data,
@ -14362,14 +14373,12 @@ 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",
@ -14410,7 +14419,6 @@ server <- function(input, output, session) {
# }
# )
rv$code$table1 <- glue::glue("FreesearchR::create_baseline(df,{list2str(parameters)})")
})
@ -14451,12 +14459,9 @@ 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()
@ -14465,7 +14470,6 @@ server <- function(input, output, session) {
# mcar_validate(data=rv$missings()[["_data"]],outcome = input$missings_var)
# })
##############################################################################
#########
######### Data visuals

Binary file not shown.

Binary file not shown.

Binary file not shown.

View file

@ -314,16 +314,17 @@
"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","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."
"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."
"Data successfully imported!","Data successfully imported!"
"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."
"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"

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 Modify factor levels Ændr kategoriske niveauer
318 Reorder or rename the levels of factor/categorical variables. Reorder or rename the levels of factor/categorical variables. Ændr navn eller rækkefølge på kategorisk variabel.
319 Maximum number of observations: Maximum number of observations: Maximale antal observationer:
320 setting to 0 includes all setting to 0 includes all angiv 0 for at inkludere alle
321 Select a dataset from your environment or sample dataset from a package. 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.
322 Select a sample dataset from a package. Select a sample dataset from a package. Vælg et træningsdatasæt.
323 Data ready to be imported! Data ready to be imported! Data er klar til at blive importeret!
324 Data has %s obs. of %s variables. Data has %s obs. of %s variables. Data har %s obs. på %s variabler.
325 Data successfully imported! Data successfully imported!
326 Click to see data Click to see data Klik for at se data
327 No data present. No data present. Ingen data tilstede.
328 You have provided a complete dataset with no missing values. You have provided a complete dataset with no missing values. Data er uden manglende observationer.
329 Start by loading data. Start by loading data. Start med at vælge data.
330 Sample data Træningsdata

View file

@ -327,3 +327,4 @@
"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.
330 Sample data Sample data

View file

@ -10,9 +10,12 @@ custom_theme(
primary = FreesearchR_colors("primary"),
secondary = FreesearchR_colors("secondary"),
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans", wght = "700"),
code_font = bslib::font_google("Open Sans"),
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')"),
success = FreesearchR_colors("success"),
info = FreesearchR_colors("info"),
warning = FreesearchR_colors("warning"),