From 4213487a77b5ec0d7f0849703340fe61246c0cd1 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Thu, 2 Apr 2026 10:10:40 +0200 Subject: [PATCH] v26.4.1 ready --- R/hosted_version.R | 2 +- app_docker/app.R | 202 ++++++++++++--------- app_docker/translations/translation_da.csv | 5 +- app_docker/translations/translation_sw.csv | 5 +- inst/apps/FreesearchR/app.R | 202 ++++++++++++--------- 5 files changed, 245 insertions(+), 171 deletions(-) diff --git a/R/hosted_version.R b/R/hosted_version.R index 608d59ed..6e001f53 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v26.4.1-260401' +hosted_version <- function()'v26.4.1-260402' diff --git a/app_docker/app.R b/app_docker/app.R index a2b1dc19..fe1bceb3 100644 --- a/app_docker/app.R +++ b/app_docker/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpRQAQCo/file4ab639355bd6.R +#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpmlTuE8/file8be05102425f.R ######## i18n_path <- here::here("translations") @@ -64,7 +64,7 @@ i18n$set_translation_language("en") #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'26.3.6' +app_version <- function()'26.4.1' ######## @@ -2157,7 +2157,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_plot", title = "Create plot", - icon = bsicons::bs_icon("graph-up"), + icon = phosphoricons::ph("chart-line"), + # icon = bsicons::bs_icon("graph-up"), shiny::uiOutput(outputId = ns("primary")), shiny::helpText( i18n$t( @@ -2174,7 +2175,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { inputId = ns("act_plot"), label = i18n$t("Plot"), width = "100%", - icon = shiny::icon("palette"), + icon = phosphoricons::ph("paint-brush"), + # icon = shiny::icon("palette"), disabled = FALSE ), shiny::helpText(i18n$t('Adjust settings, then press "Plot".')) @@ -2182,7 +2184,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_download", title = "Download", - icon = bsicons::bs_icon("download"), + icon = phosphoricons::ph("download-simple"), + # icon = bsicons::bs_icon("download"), shinyWidgets::noUiSliderInput( inputId = ns("height_slide"), label = i18n$t("Plot height (mm)"), @@ -2221,7 +2224,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), @@ -3280,21 +3284,29 @@ class_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "numeric")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "factor")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "integer")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "character")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "logical")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (any(c("Date", "POSIXt") %in% x)) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (any("POSIXct", "hms") %in% x) { - shiny::icon("clock") + phosphoricons::ph("clock") + # shiny::icon("clock") } else { - shiny::icon("table") + phosphoricons::ph("calendar") + # shiny::icon("table") }} } @@ -3313,21 +3325,29 @@ type_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "continuous")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "categorical")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "ordinal")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "text")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "dichotomous")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (identical(x,"datetime")) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (identical(x,"id")) { - shiny::icon("id-card") + phosphoricons::ph("identification-badge") + # shiny::icon("id-card") } else { - shiny::icon("table") + phosphoricons::ph("table") + # shiny::icon("table") } } } @@ -4925,7 +4945,7 @@ apply_idea_filter <- function(filtered_reactive, df_target, env = parent.frame() #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v26.3.6-260331' +hosted_version <- function()'v26.4.1-260402' ######## @@ -6137,20 +6157,6 @@ landing_page_ui <- function(i18n) { div( class = "container my-5", - # Introduction text - # div( - # class = "row mb-5", - # div( - # class = "col-12 text-center", - # p( - # class = "lead", - # i18n$t("Start with FreesearchR for basic data evaluation and analysis."), - # i18n$t("When you need more advanced tools, you'll be better prepared to use R directly."), - # style = "font-size: 1.2rem; color: #555;" - # ) - # ) - # ), - # Core Features Section h2(i18n$t("Core Features"), class = "text-center mb-4", style = "color: #1E4A8F; font-weight: 600;"), @@ -6168,7 +6174,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("file-import") + phosphoricons::ph("folder-simple-plus", weight = "bold") + # fa("file-import") ), h4(i18n$t("Import Data"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6189,7 +6196,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("pen-to-square") + phosphoricons::ph("note-pencil", weight = "bold") + # fa("pen-to-square") ), h4(i18n$t("Data Management"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6210,7 +6218,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("magnifying-glass-chart") + phosphoricons::ph("magnifying-glass", weight = "bold") + # fa("magnifying-glass-chart") ), h4(i18n$t("Descriptive Statistics"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6235,7 +6244,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("chart-line"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("chart-line", weight = "bold"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Create simple, clean plots for quick insights and overview")) ) ) @@ -6247,7 +6256,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("calculator"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("calculator", weight = "bold"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Build simple regression models for advanced analysis")) ) ) @@ -6264,7 +6273,7 @@ landing_page_ui <- function(i18n) { style = "background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border: none;", div( class = "card-body p-4", - h4(fa("download"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), + h4(phosphoricons::ph("book-bookmark", weight = "bold"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), div( class = "row text-center", div( @@ -6554,7 +6563,8 @@ data_missings_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_mis", title = "Settings", - icon = bsicons::bs_icon("gear"), + icon = phosphoricons::ph("gear"), + # icon = bsicons::bs_icon("gear"), shiny::conditionalPanel( condition = "output.missings == true", shiny::uiOutput(ns("missings_method")), @@ -6571,14 +6581,16 @@ data_missings_ui <- function(id, ...) { inputId = ns("act_miss"), label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ) ), do.call(bslib::accordion_panel, c( list( title = "Download", - icon = bsicons::bs_icon("file-earmark-arrow-down") + icon = phosphoricons::ph("download-simple") + # icon = bsicons::bs_icon("file-earmark-arrow-down") ), table_download_ui(id = ns("tbl_dwn"), title = NULL) )) @@ -7933,7 +7945,8 @@ plot_download_ui <- regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = "Download plot", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) } @@ -8071,7 +8084,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_connect"), label = i18n$t("Connect"), - icon = shiny::icon("link", lib = "glyphicon"), + icon = phosphoricons::ph("link",weight = "bold"), + # icon = shiny::icon("link", lib = "glyphicon"), width = "100%", disabled = TRUE ), @@ -8127,7 +8141,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::dropMenu( shiny::actionButton( inputId = ns("dropdown_params"), - label = shiny::icon("filter"), + label = phosphoricons::ph("funnel",weight = "bold"), + # label = shiny::icon("filter"), width = "50px" ), filter_ui @@ -8146,7 +8161,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_import"), label = i18n$t("Import"), - icon = shiny::icon("download", lib = "glyphicon"), + icon = phosphoricons::ph("download-simple",weight = "bold"), + # icon = shiny::icon("download", lib = "glyphicon"), width = "100%", disabled = TRUE ), @@ -10141,7 +10157,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_reg", title = i18n$t("Regression"), - icon = bsicons::bs_icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = bsicons::bs_icon("calculator"), shiny::uiOutput(outputId = ns("outcome_var")), # shiny::selectInput( # inputId = "design", @@ -10175,7 +10192,8 @@ regression_ui <- function(id, ...) { bslib::input_task_button( id = ns("load"), label = i18n$t("Analyse"), - icon = bsicons::bs_icon("pencil"), + icon = phosphoricons::ph("math-operations"), + # icon = bsicons::bs_icon("pencil"), label_busy = i18n$t("Working..."), icon_busy = fontawesome::fa_i("arrows-rotate", class = "fa-spin", @@ -10220,7 +10238,8 @@ regression_ui <- function(id, ...) { list( value = "acc_pan_coef_plot", title = "Coefficients plot", - icon = bsicons::bs_icon("bar-chart-steps"), + icon = phosphoricons::ph("chart-bar-horizontal"), + # icon = bsicons::bs_icon("bar-chart-steps"), shiny::tags$br(), shiny::uiOutput(outputId = ns("plot_model")) ), @@ -10263,7 +10282,8 @@ regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ) @@ -10284,7 +10304,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_checks", title = "Checks", - icon = bsicons::bs_icon("clipboard-check"), + icon = phosphoricons::ph("checks"), + # icon = bsicons::bs_icon("clipboard-check"), shiny::uiOutput(outputId = ns("plot_checks")) ) ) @@ -11428,7 +11449,8 @@ table_download_server <- function(id, data, file_name = "table", ...) { shiny::downloadButton( outputId = ns("act_table"), label = i18n$t("Download table"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) } else { # Return NULL to show nothing @@ -11719,7 +11741,8 @@ ui_elements <- function(selection) { "home" = bslib::nav_panel( title = "FreesearchR", # title = shiny::div(htmltools::img(src="FreesearchR-logo-white-nobg-h80.png")), - icon = shiny::icon("house"), + icon = phosphoricons::ph("house", weight = "bold"), + # icon = shiny::icon("house"), shiny::fluidRow( # "The browser language is", # textOutput("your_lang"), @@ -11749,7 +11772,8 @@ ui_elements <- function(selection) { ############################################################################## "import" = bslib::nav_panel( title = i18n$t("Get started"), - icon = shiny::icon("play"), + icon = phosphoricons::ph("play", weight = "bold"), + # icon = shiny::icon("play"), value = "nav_import", shiny::fluidRow( shiny::column(width = 2), @@ -11826,7 +11850,8 @@ ui_elements <- function(selection) { inputId = "modal_initial_view", label = i18n$t("Quick overview"), width = "100%", - icon = shiny::icon("binoculars"), + icon = phosphoricons::ph("binoculars"), + # icon = shiny::icon("binoculars"), disabled = FALSE ), shiny::br(), @@ -11870,7 +11895,8 @@ ui_elements <- function(selection) { inputId = "act_start", label = i18n$t("Let's begin!"), width = "100%", - icon = shiny::icon("play"), + icon = phosphoricons::ph("play"), + # icon = shiny::icon("play"), disabled = TRUE ), shiny::br(), @@ -11889,11 +11915,13 @@ ui_elements <- function(selection) { ############################################################################## "prepare" = bslib::nav_menu( title = i18n$t("Prepare"), - icon = shiny::icon("pen-to-square"), + icon = phosphoricons::ph("note-pencil", weight = "bold"), + # icon = shiny::icon("pen-to-square"), value = "nav_prepare", bslib::nav_panel( title = i18n$t("Overview and filter"), - icon = shiny::icon("eye"), + icon = phosphoricons::ph("eye"), + # icon = shiny::icon("eye"), value = "nav_prepare_overview", tags$h3(i18n$t("Overview and filtering")), fluidRow( @@ -11968,7 +11996,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Edit and create data"), - icon = shiny::icon("file-pen"), + icon = phosphoricons::ph("pencil-line"), + # icon = shiny::icon("file-pen"), tags$h3(i18n$t("Subset, rename and convert variables")), fluidRow(shiny::column( width = 9, shiny::tags$p( @@ -11997,13 +12026,13 @@ ui_elements <- function(selection) { width = 3, shiny::actionButton( inputId = "modal_update", - label = i18n$t("Modify factor levels"), + label = i18n$t("Modify factor"), width = "100%" ), shiny::tags$br(), - shiny::helpText( - i18n$t("Reorder or rename the levels of factor/categorical variables.") - ), + shiny::helpText(i18n$t( + "Modify the levels of factor/categorical variables." + )), shiny::tags$br(), shiny::tags$br() ), @@ -12016,9 +12045,7 @@ ui_elements <- function(selection) { ), shiny::tags$br(), shiny::helpText( - i18n$t( - "Create factor/categorical variable from a continous variable (number/date/time)." - ) + i18n$t("Create factor/categorical variable from other variables.") ), shiny::tags$br(), shiny::tags$br() @@ -12095,14 +12122,16 @@ ui_elements <- function(selection) { "describe" = bslib::nav_menu( title = i18n$t("Evaluate"), - icon = shiny::icon("magnifying-glass-chart"), + icon = phosphoricons::ph("magnifying-glass", weight = "bold"), + # icon = shiny::icon("magnifying-glass-chart"), value = "nav_describe", # id = "navdescribe", # bslib::navset_bar( # title = "", bslib::nav_panel( title = i18n$t("Characteristics"), - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), bslib::layout_sidebar( sidebar = bslib::sidebar( shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -12114,7 +12143,8 @@ ui_elements <- function(selection) { open = TRUE, value = "acc_pan_chars", title = "Settings", - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), # vectorSelectInput( # inputId = "baseline_theme", # selected = "none", @@ -12156,7 +12186,8 @@ ui_elements <- function(selection) { inputId = "act_eval", label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ), shiny::helpText(i18n$t( @@ -12170,7 +12201,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Correlations"), - icon = bsicons::bs_icon("bounding-box"), + icon = phosphoricons::ph("graph"), + # icon = bsicons::bs_icon("bounding-box"), bslib::layout_sidebar( sidebar = bslib::sidebar( # shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -12211,7 +12243,8 @@ ui_elements <- function(selection) { do.call(bslib::nav_panel, c( list( title = i18n$t("Missings"), - icon = bsicons::bs_icon("x-circle") + icon = phosphoricons::ph("placeholder") + # icon = bsicons::bs_icon("x-circle") ), data_missings_ui(id = "missingness", validation_ui("validation_mcar")) )) @@ -12226,7 +12259,8 @@ ui_elements <- function(selection) { c( list( title = i18n$t("Visuals"), - icon = shiny::icon("chart-line"), + icon = phosphoricons::ph("chart-line", weight = "bold"), + # icon = shiny::icon("chart-line"), value = "nav_visuals" ), data_visuals_ui("visuals") @@ -12247,7 +12281,8 @@ ui_elements <- function(selection) { "analyze" = bslib::nav_panel( title = i18n$t("Regression"), - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator", weight = "bold"), + # icon = shiny::icon("calculator"), value = "nav_analyses", do.call(bslib::navset_card_tab, regression_ui("regression")) ), @@ -12259,7 +12294,8 @@ ui_elements <- function(selection) { "download" = bslib::nav_panel( title = i18n$t("Download"), - icon = shiny::icon("download"), + icon = phosphoricons::ph("download-simple", weight = "bold"), + # icon = shiny::icon("download"), value = "nav_download", shiny::fluidRow( shiny::column(width = 2), @@ -12295,7 +12331,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "report", label = "Download report", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ), shiny::br() # shiny::helpText("If choosing to output to MS Word, please note, that when opening the document, two errors will pop-up. Choose to repair and choose not to update references. The issue is being worked on. You can always choose LibreOffice instead."), @@ -12325,7 +12362,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "data_modified", label = "Download data", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), @@ -12459,7 +12497,7 @@ update_factor_ui <- function(id) { actionButton( disabled = TRUE, inputId = ns("drop_levels"), - label = tagList(phosphoricons::ph("sort-ascending"), i18n$t("Drop empty")), + label = tagList(phosphoricons::ph("trash"), i18n$t("Drop empty")), class = "btn-outline-primary mb-3", width = "100%" ) diff --git a/app_docker/translations/translation_da.csv b/app_docker/translations/translation_da.csv index 4f3752bd..2240bc2c 100644 --- a/app_docker/translations/translation_da.csv +++ b/app_docker/translations/translation_da.csv @@ -260,7 +260,6 @@ "FreesearchR is available in multiple languages. To help with translations, please contact us at info@freesearchr.org","FreesearchR er tilgængelig på flere sprog. For at få hjælp med oversættelser, kontakt os venligst på info@freesearchr.org" "Home","Hjem" "Start with FreesearchR for basic data evaluation and analysis.","Start med FreesearchR til grundlæggende dataevaluering og -analyse." -"When you need more advanced tools, you'll be better prepared to use R directly.","Når du har brug for mere avancerede værktøjer, vil du være bedre forberedt på at bruge R direkte." "(Read more)","(Læs mere)" "Run the FreesearchR app locally when working with sensitive data.","Kør FreesearchR-appen lokalt, når du arbejder med følsomme data." "Load data from spreadsheets, REDCap servers, or try with sample data. Multiple sources supported for maximum flexibility.","Indlæs data fra regneark, REDCap-servere, eller prøv med eksempeldata. Flere kilder understøttes for maksimal fleksibilitet." @@ -271,8 +270,6 @@ "When you need more advanced tools, you'll be prepared to use R directly.","Når du har brug for mere avancerede værktøjer, vil du være forberedt på at bruge R direkte." "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" -"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." @@ -321,3 +318,5 @@ "An empty data set was imported. Please review data filter.","An empty data set was imported. Please review data filter." "An error was encountered exporting data. Please review data filter.","An error was encountered exporting data. Please review data filter." "Likert diagram","Likert diagram" +"Modify factor","Modify factor" +"Create factor/categorical variable from other variables.","Create factor/categorical variable from other variables." diff --git a/app_docker/translations/translation_sw.csv b/app_docker/translations/translation_sw.csv index a375e0a5..7866710e 100644 --- a/app_docker/translations/translation_sw.csv +++ b/app_docker/translations/translation_sw.csv @@ -260,7 +260,6 @@ "FreesearchR is available in multiple languages. To help with translations, please contact us at info@freesearchr.org","FreesearchR inapatikana katika lugha nyingi. Ili kukusaidia na tafsiri, tafadhali wasiliana nasi kwa info@freesearchr.org." "Home","Nyumbani" "Start with FreesearchR for basic data evaluation and analysis.","Anza na FreesearchR kwa tathmini na uchambuzi wa data ya msingi." -"When you need more advanced tools, you'll be better prepared to use R directly.","Unapohitaji zana za hali ya juu zaidi, utakuwa tayari zaidi kutumia R moja kwa moja." "(Read more)","(Soma zaidi)" "Run the FreesearchR app locally when working with sensitive data.","Endesha programu ya FreesearchR ndani ya eneo lako unapofanya kazi na data nyeti." "Load data from spreadsheets, REDCap servers, or try with sample data. Multiple sources supported for maximum flexibility.","Pakia data kutoka kwa lahajedwali, seva za REDCap, au jaribu na data ya sampuli. Vyanzo vingi vinaungwa mkono kwa unyumbufu wa hali ya juu." @@ -271,8 +270,6 @@ "When you need more advanced tools, you'll be prepared to use R directly.","Unapohitaji zana za hali ya juu zaidi, utakuwa tayari kutumia R moja kwa moja." "The app contains a selelct number of features and will guide you through key analyses.","The app contains a selelct number of features and will guide you through key analyses." "Sort by Levels","Sort by Levels" -"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." @@ -321,3 +318,5 @@ "An empty data set was imported. Please review data filter.","An empty data set was imported. Please review data filter." "An error was encountered exporting data. Please review data filter.","An error was encountered exporting data. Please review data filter." "Likert diagram","Likert diagram" +"Modify factor","Modify factor" +"Create factor/categorical variable from other variables.","Create factor/categorical variable from other variables." diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index e64d7b30..66df2775 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpRQAQCo/file4ab61747a8d7.R +#### Current file: /var/folders/9l/xbc19wxx0g79jdd2sf_0v291mhwh7f/T//RtmpmlTuE8/file8be0207bfdc2.R ######## i18n_path <- system.file("translations", package = "FreesearchR") @@ -64,7 +64,7 @@ i18n$set_translation_language("en") #### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'26.3.6' +app_version <- function()'26.4.1' ######## @@ -2157,7 +2157,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_plot", title = "Create plot", - icon = bsicons::bs_icon("graph-up"), + icon = phosphoricons::ph("chart-line"), + # icon = bsicons::bs_icon("graph-up"), shiny::uiOutput(outputId = ns("primary")), shiny::helpText( i18n$t( @@ -2174,7 +2175,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { inputId = ns("act_plot"), label = i18n$t("Plot"), width = "100%", - icon = shiny::icon("palette"), + icon = phosphoricons::ph("paint-brush"), + # icon = shiny::icon("palette"), disabled = FALSE ), shiny::helpText(i18n$t('Adjust settings, then press "Plot".')) @@ -2182,7 +2184,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { bslib::accordion_panel( value = "acc_pan_download", title = "Download", - icon = bsicons::bs_icon("download"), + icon = phosphoricons::ph("download-simple"), + # icon = bsicons::bs_icon("download"), shinyWidgets::noUiSliderInput( inputId = ns("height_slide"), label = i18n$t("Plot height (mm)"), @@ -2221,7 +2224,8 @@ data_visuals_ui <- function(id, tab_title = "Plots", ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), @@ -3280,21 +3284,29 @@ class_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "numeric")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "factor")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "integer")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "character")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "logical")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (any(c("Date", "POSIXt") %in% x)) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (any("POSIXct", "hms") %in% x) { - shiny::icon("clock") + phosphoricons::ph("clock") + # shiny::icon("clock") } else { - shiny::icon("table") + phosphoricons::ph("calendar") + # shiny::icon("table") }} } @@ -3313,21 +3325,29 @@ type_icons <- function(x) { lapply(x,class_icons) } else { if (identical(x, "continuous")) { - shiny::icon("calculator") + phosphoricons::ph("calculator") + # shiny::icon("calculator") } else if (identical(x, "categorical")) { - shiny::icon("chart-simple") + phosphoricons::ph("chart-bar") + # shiny::icon("chart-simple") } else if (identical(x, "ordinal")) { - shiny::icon("arrow-down-1-9") + phosphoricons::ph("list-numbers") + # shiny::icon("arrow-down-1-9") } else if (identical(x, "text")) { - shiny::icon("arrow-down-a-z") + phosphoricons::ph("text-aa") + # shiny::icon("arrow-down-a-z") } else if (identical(x, "dichotomous")) { - shiny::icon("toggle-off") + phosphoricons::ph("toggle-left") + # shiny::icon("toggle-off") } else if (identical(x,"datetime")) { - shiny::icon("calendar-days") + phosphoricons::ph("calendar") + # shiny::icon("calendar-days") } else if (identical(x,"id")) { - shiny::icon("id-card") + phosphoricons::ph("identification-badge") + # shiny::icon("id-card") } else { - shiny::icon("table") + phosphoricons::ph("table") + # shiny::icon("table") } } } @@ -4925,7 +4945,7 @@ apply_idea_filter <- function(filtered_reactive, df_target, env = parent.frame() #### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v26.3.6-260331' +hosted_version <- function()'v26.4.1-260402' ######## @@ -6137,20 +6157,6 @@ landing_page_ui <- function(i18n) { div( class = "container my-5", - # Introduction text - # div( - # class = "row mb-5", - # div( - # class = "col-12 text-center", - # p( - # class = "lead", - # i18n$t("Start with FreesearchR for basic data evaluation and analysis."), - # i18n$t("When you need more advanced tools, you'll be better prepared to use R directly."), - # style = "font-size: 1.2rem; color: #555;" - # ) - # ) - # ), - # Core Features Section h2(i18n$t("Core Features"), class = "text-center mb-4", style = "color: #1E4A8F; font-weight: 600;"), @@ -6168,7 +6174,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("file-import") + phosphoricons::ph("folder-simple-plus", weight = "bold") + # fa("file-import") ), h4(i18n$t("Import Data"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6189,7 +6196,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("pen-to-square") + phosphoricons::ph("note-pencil", weight = "bold") + # fa("pen-to-square") ), h4(i18n$t("Data Management"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6210,7 +6218,8 @@ landing_page_ui <- function(i18n) { class = "card-body text-center p-4", div( style = "font-size: 3rem; color: #1E4A8F; margin-bottom: 15px;", - fa("magnifying-glass-chart") + phosphoricons::ph("magnifying-glass", weight = "bold") + # fa("magnifying-glass-chart") ), h4(i18n$t("Descriptive Statistics"), class = "card-title", style = "color: #2D2D42; font-weight: 600;"), p( @@ -6235,7 +6244,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("chart-line"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("chart-line", weight = "bold"), " ", i18n$t("Data Visualization"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Create simple, clean plots for quick insights and overview")) ) ) @@ -6247,7 +6256,7 @@ landing_page_ui <- function(i18n) { style = "border-left: 4px solid #8A4FFF;", div( class = "card-body", - h5(fa("calculator"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), + h5(phosphoricons::ph("calculator", weight = "bold"), " ", i18n$t("Regression Models"), class = "card-title", style = "color: #2D2D42;"), p(class = "card-text small", i18n$t("Build simple regression models for advanced analysis")) ) ) @@ -6264,7 +6273,7 @@ landing_page_ui <- function(i18n) { style = "background: linear-gradient(135deg, #f5f7fa 0%, #c3cfe2 100%); border: none;", div( class = "card-body p-4", - h4(fa("download"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), + h4(phosphoricons::ph("book-bookmark", weight = "bold"), " ", i18n$t("Export & Learn"), class = "text-center mb-3", style = "color: #1E4A8F;"), div( class = "row text-center", div( @@ -6554,7 +6563,8 @@ data_missings_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_mis", title = "Settings", - icon = bsicons::bs_icon("gear"), + icon = phosphoricons::ph("gear"), + # icon = bsicons::bs_icon("gear"), shiny::conditionalPanel( condition = "output.missings == true", shiny::uiOutput(ns("missings_method")), @@ -6571,14 +6581,16 @@ data_missings_ui <- function(id, ...) { inputId = ns("act_miss"), label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ) ), do.call(bslib::accordion_panel, c( list( title = "Download", - icon = bsicons::bs_icon("file-earmark-arrow-down") + icon = phosphoricons::ph("download-simple") + # icon = bsicons::bs_icon("file-earmark-arrow-down") ), table_download_ui(id = ns("tbl_dwn"), title = NULL) )) @@ -7933,7 +7945,8 @@ plot_download_ui <- regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = "Download plot", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) } @@ -8071,7 +8084,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_connect"), label = i18n$t("Connect"), - icon = shiny::icon("link", lib = "glyphicon"), + icon = phosphoricons::ph("link",weight = "bold"), + # icon = shiny::icon("link", lib = "glyphicon"), width = "100%", disabled = TRUE ), @@ -8127,7 +8141,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shinyWidgets::dropMenu( shiny::actionButton( inputId = ns("dropdown_params"), - label = shiny::icon("filter"), + label = phosphoricons::ph("funnel",weight = "bold"), + # label = shiny::icon("filter"), width = "50px" ), filter_ui @@ -8146,7 +8161,8 @@ m_redcap_readUI <- function(id, title = TRUE, url = NULL) { shiny::actionButton( inputId = ns("data_import"), label = i18n$t("Import"), - icon = shiny::icon("download", lib = "glyphicon"), + icon = phosphoricons::ph("download-simple",weight = "bold"), + # icon = shiny::icon("download", lib = "glyphicon"), width = "100%", disabled = TRUE ), @@ -10141,7 +10157,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_reg", title = i18n$t("Regression"), - icon = bsicons::bs_icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = bsicons::bs_icon("calculator"), shiny::uiOutput(outputId = ns("outcome_var")), # shiny::selectInput( # inputId = "design", @@ -10175,7 +10192,8 @@ regression_ui <- function(id, ...) { bslib::input_task_button( id = ns("load"), label = i18n$t("Analyse"), - icon = bsicons::bs_icon("pencil"), + icon = phosphoricons::ph("math-operations"), + # icon = bsicons::bs_icon("pencil"), label_busy = i18n$t("Working..."), icon_busy = fontawesome::fa_i("arrows-rotate", class = "fa-spin", @@ -10220,7 +10238,8 @@ regression_ui <- function(id, ...) { list( value = "acc_pan_coef_plot", title = "Coefficients plot", - icon = bsicons::bs_icon("bar-chart-steps"), + icon = phosphoricons::ph("chart-bar-horizontal"), + # icon = bsicons::bs_icon("bar-chart-steps"), shiny::tags$br(), shiny::uiOutput(outputId = ns("plot_model")) ), @@ -10263,7 +10282,8 @@ regression_ui <- function(id, ...) { shiny::downloadButton( outputId = ns("download_plot"), label = i18n$t("Download plot"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ) @@ -10284,7 +10304,8 @@ regression_ui <- function(id, ...) { bslib::accordion_panel( value = "acc_pan_checks", title = "Checks", - icon = bsicons::bs_icon("clipboard-check"), + icon = phosphoricons::ph("checks"), + # icon = bsicons::bs_icon("clipboard-check"), shiny::uiOutput(outputId = ns("plot_checks")) ) ) @@ -11428,7 +11449,8 @@ table_download_server <- function(id, data, file_name = "table", ...) { shiny::downloadButton( outputId = ns("act_table"), label = i18n$t("Download table"), - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) } else { # Return NULL to show nothing @@ -11719,7 +11741,8 @@ ui_elements <- function(selection) { "home" = bslib::nav_panel( title = "FreesearchR", # title = shiny::div(htmltools::img(src="FreesearchR-logo-white-nobg-h80.png")), - icon = shiny::icon("house"), + icon = phosphoricons::ph("house", weight = "bold"), + # icon = shiny::icon("house"), shiny::fluidRow( # "The browser language is", # textOutput("your_lang"), @@ -11749,7 +11772,8 @@ ui_elements <- function(selection) { ############################################################################## "import" = bslib::nav_panel( title = i18n$t("Get started"), - icon = shiny::icon("play"), + icon = phosphoricons::ph("play", weight = "bold"), + # icon = shiny::icon("play"), value = "nav_import", shiny::fluidRow( shiny::column(width = 2), @@ -11826,7 +11850,8 @@ ui_elements <- function(selection) { inputId = "modal_initial_view", label = i18n$t("Quick overview"), width = "100%", - icon = shiny::icon("binoculars"), + icon = phosphoricons::ph("binoculars"), + # icon = shiny::icon("binoculars"), disabled = FALSE ), shiny::br(), @@ -11870,7 +11895,8 @@ ui_elements <- function(selection) { inputId = "act_start", label = i18n$t("Let's begin!"), width = "100%", - icon = shiny::icon("play"), + icon = phosphoricons::ph("play"), + # icon = shiny::icon("play"), disabled = TRUE ), shiny::br(), @@ -11889,11 +11915,13 @@ ui_elements <- function(selection) { ############################################################################## "prepare" = bslib::nav_menu( title = i18n$t("Prepare"), - icon = shiny::icon("pen-to-square"), + icon = phosphoricons::ph("note-pencil", weight = "bold"), + # icon = shiny::icon("pen-to-square"), value = "nav_prepare", bslib::nav_panel( title = i18n$t("Overview and filter"), - icon = shiny::icon("eye"), + icon = phosphoricons::ph("eye"), + # icon = shiny::icon("eye"), value = "nav_prepare_overview", tags$h3(i18n$t("Overview and filtering")), fluidRow( @@ -11968,7 +11996,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Edit and create data"), - icon = shiny::icon("file-pen"), + icon = phosphoricons::ph("pencil-line"), + # icon = shiny::icon("file-pen"), tags$h3(i18n$t("Subset, rename and convert variables")), fluidRow(shiny::column( width = 9, shiny::tags$p( @@ -11997,13 +12026,13 @@ ui_elements <- function(selection) { width = 3, shiny::actionButton( inputId = "modal_update", - label = i18n$t("Modify factor levels"), + label = i18n$t("Modify factor"), width = "100%" ), shiny::tags$br(), - shiny::helpText( - i18n$t("Reorder or rename the levels of factor/categorical variables.") - ), + shiny::helpText(i18n$t( + "Modify the levels of factor/categorical variables." + )), shiny::tags$br(), shiny::tags$br() ), @@ -12016,9 +12045,7 @@ ui_elements <- function(selection) { ), shiny::tags$br(), shiny::helpText( - i18n$t( - "Create factor/categorical variable from a continous variable (number/date/time)." - ) + i18n$t("Create factor/categorical variable from other variables.") ), shiny::tags$br(), shiny::tags$br() @@ -12095,14 +12122,16 @@ ui_elements <- function(selection) { "describe" = bslib::nav_menu( title = i18n$t("Evaluate"), - icon = shiny::icon("magnifying-glass-chart"), + icon = phosphoricons::ph("magnifying-glass", weight = "bold"), + # icon = shiny::icon("magnifying-glass-chart"), value = "nav_describe", # id = "navdescribe", # bslib::navset_bar( # title = "", bslib::nav_panel( title = i18n$t("Characteristics"), - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), bslib::layout_sidebar( sidebar = bslib::sidebar( shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -12114,7 +12143,8 @@ ui_elements <- function(selection) { open = TRUE, value = "acc_pan_chars", title = "Settings", - icon = bsicons::bs_icon("table"), + icon = phosphoricons::ph("table"), + # icon = bsicons::bs_icon("table"), # vectorSelectInput( # inputId = "baseline_theme", # selected = "none", @@ -12156,7 +12186,8 @@ ui_elements <- function(selection) { inputId = "act_eval", label = i18n$t("Evaluate"), width = "100%", - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator"), + # icon = shiny::icon("calculator"), disabled = TRUE ), shiny::helpText(i18n$t( @@ -12170,7 +12201,8 @@ ui_elements <- function(selection) { ), bslib::nav_panel( title = i18n$t("Correlations"), - icon = bsicons::bs_icon("bounding-box"), + icon = phosphoricons::ph("graph"), + # icon = bsicons::bs_icon("bounding-box"), bslib::layout_sidebar( sidebar = bslib::sidebar( # shiny::uiOutput(outputId = "data_info_nochar", inline = TRUE), @@ -12211,7 +12243,8 @@ ui_elements <- function(selection) { do.call(bslib::nav_panel, c( list( title = i18n$t("Missings"), - icon = bsicons::bs_icon("x-circle") + icon = phosphoricons::ph("placeholder") + # icon = bsicons::bs_icon("x-circle") ), data_missings_ui(id = "missingness", validation_ui("validation_mcar")) )) @@ -12226,7 +12259,8 @@ ui_elements <- function(selection) { c( list( title = i18n$t("Visuals"), - icon = shiny::icon("chart-line"), + icon = phosphoricons::ph("chart-line", weight = "bold"), + # icon = shiny::icon("chart-line"), value = "nav_visuals" ), data_visuals_ui("visuals") @@ -12247,7 +12281,8 @@ ui_elements <- function(selection) { "analyze" = bslib::nav_panel( title = i18n$t("Regression"), - icon = shiny::icon("calculator"), + icon = phosphoricons::ph("calculator", weight = "bold"), + # icon = shiny::icon("calculator"), value = "nav_analyses", do.call(bslib::navset_card_tab, regression_ui("regression")) ), @@ -12259,7 +12294,8 @@ ui_elements <- function(selection) { "download" = bslib::nav_panel( title = i18n$t("Download"), - icon = shiny::icon("download"), + icon = phosphoricons::ph("download-simple", weight = "bold"), + # icon = shiny::icon("download"), value = "nav_download", shiny::fluidRow( shiny::column(width = 2), @@ -12295,7 +12331,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "report", label = "Download report", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ), shiny::br() # shiny::helpText("If choosing to output to MS Word, please note, that when opening the document, two errors will pop-up. Choose to repair and choose not to update references. The issue is being worked on. You can always choose LibreOffice instead."), @@ -12325,7 +12362,8 @@ ui_elements <- function(selection) { shiny::downloadButton( outputId = "data_modified", label = "Download data", - icon = shiny::icon("download") + icon = phosphoricons::ph("arrow-fat-down") + # icon = shiny::icon("download") ) ) ), @@ -12459,7 +12497,7 @@ update_factor_ui <- function(id) { actionButton( disabled = TRUE, inputId = ns("drop_levels"), - label = tagList(phosphoricons::ph("sort-ascending"), i18n$t("Drop empty")), + label = tagList(phosphoricons::ph("trash"), i18n$t("Drop empty")), class = "btn-outline-primary mb-3", width = "100%" )