mirror of
https://github.com/agdamsbo/FreesearchR.git
synced 2026-06-19 12:37:30 +02:00
Compare commits
No commits in common. "fcc9443ceada46383a1852546abf00d80f62084c" and "16e3e5eb28402decdb64e3b9c526583678be2da7" have entirely different histories.
fcc9443cea
...
16e3e5eb28
22 changed files with 149 additions and 180 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")),
|
||||
|
|
|
|||
8
NEWS.md
8
NEWS.md
|
|
@ -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.
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
app_version <- function()'26.3.1'
|
||||
app_version <- function()'26.2.2'
|
||||
|
|
|
|||
|
|
@ -1 +1 @@
|
|||
hosted_version <- function()'v26.3.1-260228'
|
||||
hosted_version <- function()'v26.2.2-260223'
|
||||
|
|
|
|||
BIN
R/sysdata.rda
BIN
R/sysdata.rda
Binary file not shown.
18
R/theme.R
18
R/theme.R
|
|
@ -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"),
|
||||
|
|
|
|||
|
|
@ -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(
|
||||
|
|
|
|||
23
SESSION.md
23
SESSION.md
|
|
@ -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) |
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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."
|
||||
|
|
|
|||
|
|
|
@ -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"
|
||||
|
|
|
|||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
|
@ -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."
|
||||
|
|
|
|||
|
|
|
@ -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"
|
||||
|
|
|
|||
|
|
|
@ -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"),
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue