From 5c8d84fccd7db80d73c3839eb0bd2c5dd2c2ab51 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Thu, 3 Jul 2025 20:26:35 +0200 Subject: [PATCH] JS in separate file to autohide dropdowns on navigation - new dev version --- CITATION.cff | 2 +- DESCRIPTION | 2 +- NEWS.md | 6 +- R/app_version.R | 2 +- R/hosted_version.R | 2 +- R/sysdata.rda | Bin 2736 -> 2887 bytes SESSION.md | 22 ++++- inst/apps/FreesearchR/app.R | 137 +++++++++++++++------------ inst/apps/FreesearchR/www/scripts.js | 29 ++++++ inst/assets/js/FreesearchR.js | 29 ++++++ 10 files changed, 165 insertions(+), 66 deletions(-) create mode 100644 inst/apps/FreesearchR/www/scripts.js create mode 100644 inst/assets/js/FreesearchR.js diff --git a/CITATION.cff b/CITATION.cff index 7581c53..b3fc5ff 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -9,7 +9,7 @@ type: software license: AGPL-3.0-or-later title: 'FreesearchR: A free and open-source browser based data analysis tool for researchers with publication ready output' -version: 25.7.1 +version: 25.7.2 doi: 10.5281/zenodo.14527429 identifiers: - type: url diff --git a/DESCRIPTION b/DESCRIPTION index 44cba0a..002733c 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -1,6 +1,6 @@ Package: FreesearchR Title: A free and open-source browser based data analysis tool for researchers with publication ready output -Version: 25.7.1 +Version: 25.7.2 Authors@R: c( person("Andreas Gammelgaard", "Damsbo",email="agdamsbo@clin.au.dk", role = c("aut", "cre"), comment = c(ORCID = "0000-0002-7559-1154")), diff --git a/NEWS.md b/NEWS.md index 6f2aee4..cd8a685 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,4 +1,8 @@ -# FreesearchR 25.7.1 - DEV +# FreesearchR 25.7.2 - DEV + +- *FIX* refining hiding drop downs. All JavaScript is now in separate file. Coded with GAI help from claude.ai. + +# FreesearchR 25.7.1 - *NEW* UI overhaul and navigation update. The interface is simplified to clearly show the relationship between panels and sub-items by abandoning multiple levels on panel to instead show a drop-down menu. This also results in simplified sidebar menus with room to add more controls in the future. diff --git a/R/app_version.R b/R/app_version.R index e3d7b11..6a80b53 100644 --- a/R/app_version.R +++ b/R/app_version.R @@ -1 +1 @@ -app_version <- function()'25.7.1' +app_version <- function()'25.7.2' diff --git a/R/hosted_version.R b/R/hosted_version.R index 46b5b94..f6236bf 100644 --- a/R/hosted_version.R +++ b/R/hosted_version.R @@ -1 +1 @@ -hosted_version <- function()'v25.7.1-250703' +hosted_version <- function()'v25.7.2-250703' diff --git a/R/sysdata.rda b/R/sysdata.rda index 35ebcff5492311a340bc0700644a53ae1e42c8ee..252c2f4248ccc17be468bd3a8b4d66fdf615ebac 100644 GIT binary patch literal 2887 zcmV-N3%K+`T4*^jL0KkKSp>Xph5#Hef5HF%Xazw3|KNXb-@w2B|L{NnKmZ5<;0*s8 zj>^?;^#i~tuD}OC0?$-XQd9*$TPfCzROervRRXjq2)Xcq(QA{tD_MG}{daWx#U5|loL{4~JO&>Yg_FVmZRoy1 zG!{SVPdn|~1N@~k=^rP$MK|4$nvTlsu_v}5%Kx$1%)L6xbg-`;W>w|wP&#Yhw?hco za^>*W)fp3W3Tu}&93o~?I;KgWb6~ke$)mWY?cq^6b7-l`LK5SZHy+js|4lOfviqcX z{bNzbEE`1^-(|N1h*72p)spN<2?wdNG|1)|$*Ybp+rNg)`>QlX$p~J&l!7AN7v<{gg zId-|5SoQ5;D>^J0p#^!beWfQv5~R{&l55v(Jq8yr$(c>pUEEm58SU|D9Gvb|vVLSh z!$8VdsBPk)(jY($h6n;PZ06pk<@&ktTn%_ZRMiv_U=cuw7zGqaK$0vZDg=N-y2u2Z zBtZ%_B1SCCs;J=O#(I1x4}t|m)x(Fq#T6}kJLUjM&U5lmCPaqDk1H;Vc4Vk{HN6MKYq6i)CCOOC}c9O0f7w3=Z18v%_>Evu0fpDKiPInldR3wXD*4E@s#t zA8;UWfRaW8gzQj~P9y;4<)8;!QdH(;MNxFrQg61ntGzP=7R+3^lA8cXQo6AkrZt!< zRdU#?7};pI5@Wy)Sd!)C)qum9HiiVXWvrGkQZa#)%$DD&F^UPxBoOGb5{v;DAjtQv z1D5pipkZpsWhk=C?r&i_NF7!OL($VX`en9>MYp3RW<`lnr4qH+!m|uvP^K{N`M{tg z>h%mT%hh%gr9hN1T0tv?m>Ul8f@6VDG0X{#G8+kOg^-r077z<$vH>_9t!RLu6rQfw zXN`NtOhI5hCiqEkHMwmSptS8+6;)kQu>lw`HbF^P6m%dX;ZS~+ZlWhK>GF5v)6r4ozFt;QRThK6)(K^z#YN9q-k=yvhK+VCF?y)9_KNwKp>+b0_y^VE z@vc)LXLZ*jyQ5;bW2-hIl&$kg#+NrqMWqMAVj7j**kMZ|B! zx~fXs>~!7z3uptshnSkm%{NO7X_~t>K*QZ&c#!9F*BCAA z!60&Ewq<)zlzIbL=|Z^G6ksJMa(Oig2}YAe?&jYjW5iW~f5+5=cAf${j5&1rCKh|6 zl@_*?$B>5}!;r&%cA!duE!ta z-jhNyzXG9J%!k*y>)|juBlvm3u4%?wAzqDoxn+TB4@T)7W*O!@UGg5PIDuXS?_6ezY*2D(+6W= zYW6WF^CE$XtQ0$eu^z0}iy&D9Am$eW72~9hSdbJom`MlUZ3cpFPjKP_x z6sBC*quOJkVQQ&sL>qC#1}N9^906)&T#aNv=rDlT^%Ue4jRnNR%TtkFRZ&knJYJnI z6ai*wiSj#O?0knK>B*qZ#7qM71I~jnx>*eaoqv|z_;X|-E~gVN`c*$_MEOF5uus+I zqRyvRcEK>6lSMe&vGj!iy)~#yDUKiZ4$p}tCw2=3s~9bJ29i*aZAPrJd%@|uCk*tL zu+BpC88vLjJgI=_6G-7q{Cu+po=ZF;7138qSg8!HtkgXRZ_I*f@&n$WZ-x+Uvu;_- z87Weap{Pp6iq>E)65<`=w?z{ha7;I%HK#dJ_J-dW6iyA?A1J$9sKQ2CB#dOj8<`#P zRPQzo(OW&I_m%NDRPx@9y52N<u|DVBUNc{ zsIW=*9i5dzil(uP7f?>bX${VvdNLB)Ypq*Xk;*lqFs1-N)q3iw l?UCz7iQ@z^T@f0dBOr9ZT%5^?Gs=I(+>uTcBmplQp@9CzRA&GH literal 2736 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 diff --git a/SESSION.md b/SESSION.md index 7fbbf44..1e58599 100644 --- a/SESSION.md +++ b/SESSION.md @@ -15,7 +15,7 @@ |rstudio |2025.05.0+496 Mariposa Orchid (desktop) | |pandoc |3.6.4 @ /opt/homebrew/bin/ (via rmarkdown) | |quarto |1.7.30 @ /usr/local/bin/quarto | -|FreesearchR |25.7.1.250703 | +|FreesearchR |25.7.2.250703 | -------------------------------------------------------------------------------- @@ -26,6 +26,8 @@ |apexcharter |0.4.4 |2024-09-06 |CRAN (R 4.4.1) | |askpass |1.2.1 |2024-10-04 |CRAN (R 4.4.1) | |assertthat |0.2.1 |2019-03-21 |CRAN (R 4.4.1) | +|attachment |0.4.5 |2025-03-14 |CRAN (R 4.4.1) | +|attempt |0.3.1 |2020-05-03 |CRAN (R 4.4.1) | |backports |1.5.0 |2024-05-23 |CRAN (R 4.4.1) | |base64enc |0.1-3 |2015-07-28 |CRAN (R 4.4.1) | |bayestestR |0.15.3 |2025-04-28 |CRAN (R 4.4.1) | @@ -43,6 +45,7 @@ |cardx |0.2.4 |2025-04-12 |CRAN (R 4.4.1) | |caTools |1.18.3 |2024-09-04 |CRAN (R 4.4.1) | |cellranger |1.1.0 |2016-07-27 |CRAN (R 4.4.0) | +|cffr |1.2.0 |2025-01-25 |CRAN (R 4.4.1) | |checkmate |2.3.2 |2024-07-29 |CRAN (R 4.4.0) | |class |7.3-23 |2025-01-01 |CRAN (R 4.4.1) | |classInt |0.4-11 |2025-01-08 |CRAN (R 4.4.1) | @@ -52,7 +55,9 @@ |colorspace |2.1-1 |2024-07-26 |CRAN (R 4.4.1) | |commonmark |1.9.5 |2025-03-17 |CRAN (R 4.4.1) | |crayon |1.5.3 |2024-06-20 |CRAN (R 4.4.1) | +|credentials |2.0.2 |2024-10-04 |CRAN (R 4.4.1) | |crosstalk |1.2.1 |2023-11-23 |CRAN (R 4.4.0) | +|curl |6.2.2 |2025-03-24 |CRAN (R 4.4.1) | |data.table |1.17.0 |2025-02-22 |CRAN (R 4.4.1) | |datamods |1.5.3 |2024-10-02 |CRAN (R 4.4.1) | |datawizard |1.0.2 |2025-03-24 |CRAN (R 4.4.1) | @@ -61,6 +66,7 @@ |devtools |2.4.5 |2022-10-11 |CRAN (R 4.4.0) | |DHARMa |0.4.7 |2024-10-18 |CRAN (R 4.4.1) | |digest |0.6.37 |2024-08-19 |CRAN (R 4.4.1) | +|dockerfiler |0.2.5 |2025-05-07 |CRAN (R 4.4.1) | |doParallel |1.0.17 |2022-02-07 |CRAN (R 4.4.0) | |dplyr |1.1.4 |2023-11-17 |CRAN (R 4.4.0) | |DT |0.33 |2024-04-04 |CRAN (R 4.4.0) | @@ -84,16 +90,19 @@ |foreach |1.5.2 |2022-02-02 |CRAN (R 4.4.0) | |foreign |0.8-90 |2025-03-31 |CRAN (R 4.4.1) | |Formula |1.2-5 |2023-02-24 |CRAN (R 4.4.1) | -|FreesearchR |25.7.1 |NA |NA | +|FreesearchR |25.7.2 |NA |NA | |fs |1.6.6 |2025-04-12 |CRAN (R 4.4.1) | |gdtools |0.4.2 |2025-03-27 |CRAN (R 4.4.1) | |generics |0.1.3 |2022-07-05 |CRAN (R 4.4.1) | +|gert |2.1.5 |2025-03-25 |CRAN (R 4.4.1) | |ggalluvial |0.12.5 |2023-02-22 |CRAN (R 4.4.0) | |ggcorrplot |0.1.4.1 |2023-09-05 |CRAN (R 4.4.0) | |ggforce |0.4.2 |2024-02-19 |CRAN (R 4.4.0) | |ggplot2 |3.5.2 |2025-04-09 |CRAN (R 4.4.1) | |ggridges |0.5.6 |2024-01-23 |CRAN (R 4.4.0) | |ggstats |0.9.0 |2025-03-10 |CRAN (R 4.4.1) | +|gh |1.4.1 |2024-03-28 |CRAN (R 4.4.0) | +|gitcreds |0.1.2 |2022-09-08 |CRAN (R 4.4.1) | |glue |1.8.0 |2024-09-30 |CRAN (R 4.4.1) | |gridExtra |2.3 |2017-09-09 |CRAN (R 4.4.1) | |gt |1.0.0 |2025-04-05 |CRAN (R 4.4.1) | @@ -107,11 +116,13 @@ |htmltools |0.5.8.1 |2024-04-04 |CRAN (R 4.4.1) | |htmlwidgets |1.6.4 |2023-12-06 |CRAN (R 4.4.0) | |httpuv |1.6.16 |2025-04-16 |CRAN (R 4.4.1) | +|httr2 |1.1.2 |2025-03-26 |CRAN (R 4.4.1) | |IDEAFilter |0.2.0 |2024-04-15 |CRAN (R 4.4.0) | |insight |1.2.0 |2025-04-22 |CRAN (R 4.4.1) | |iterators |1.0.14 |2022-02-05 |CRAN (R 4.4.1) | |jquerylib |0.1.4 |2021-04-26 |CRAN (R 4.4.0) | |jsonlite |2.0.0 |2025-03-27 |CRAN (R 4.4.1) | +|jsonvalidate |1.5.0 |2025-02-07 |CRAN (R 4.4.1) | |KernSmooth |2.23-26 |2025-01-01 |CRAN (R 4.4.1) | |keyring |1.3.2 |2023-12-11 |CRAN (R 4.4.0) | |knitr |1.50 |2025-03-16 |CRAN (R 4.4.1) | @@ -140,6 +151,7 @@ |opdisDownsampling |1.0.1 |2024-04-15 |CRAN (R 4.4.0) | |openssl |2.3.2 |2025-02-03 |CRAN (R 4.4.1) | |openxlsx2 |1.15 |2025-04-25 |CRAN (R 4.4.1) | +|pak |0.8.0.2 |2025-04-08 |CRAN (R 4.4.1) | |parameters |0.24.2 |2025-03-04 |CRAN (R 4.4.1) | |patchwork |1.3.0 |2024-09-16 |CRAN (R 4.4.1) | |pbmcapply |1.5.1 |2022-04-28 |CRAN (R 4.4.1) | @@ -168,6 +180,7 @@ |R6 |2.6.1 |2025-02-15 |CRAN (R 4.4.1) | |ragg |1.4.0 |2025-04-10 |CRAN (R 4.4.1) | |rankinPlot |1.1.0 |2023-01-30 |CRAN (R 4.4.0) | +|rappdirs |0.3.3 |2021-01-31 |CRAN (R 4.4.1) | |rbibutils |2.3 |2024-10-04 |CRAN (R 4.4.1) | |RColorBrewer |1.1-3 |2022-04-03 |CRAN (R 4.4.1) | |Rcpp |1.0.14 |2025-01-12 |CRAN (R 4.4.1) | @@ -198,13 +211,16 @@ |see |0.11.0 |2025-03-11 |CRAN (R 4.4.1) | |sessioninfo |1.2.3 |2025-02-05 |CRAN (R 4.4.1) | |shiny |1.10.0 |2024-12-14 |CRAN (R 4.4.1) | +|shiny2docker |0.0.2 |2025-02-09 |CRAN (R 4.4.1) | |shinybusy |0.3.3 |2024-03-09 |CRAN (R 4.4.0) | |shinyjs |2.1.0 |2021-12-23 |CRAN (R 4.4.0) | |shinyTime |1.0.3 |2022-08-19 |CRAN (R 4.4.0) | |shinyWidgets |0.9.0 |2025-02-21 |CRAN (R 4.4.1) | +|sourcetools |0.1.7-1 |2023-02-01 |CRAN (R 4.4.1) | |stringi |1.8.7 |2025-03-27 |CRAN (R 4.4.1) | |stringr |1.5.1 |2023-11-14 |CRAN (R 4.4.0) | |styler |1.10.3 |2024-04-07 |CRAN (R 4.4.0) | +|sys |3.4.3 |2024-10-04 |CRAN (R 4.4.1) | |systemfonts |1.2.2 |2025-04-04 |CRAN (R 4.4.1) | |testthat |3.2.3 |2025-01-13 |CRAN (R 4.4.1) | |textshaping |1.0.0 |2025-01-20 |CRAN (R 4.4.1) | @@ -220,6 +236,7 @@ |urlchecker |1.0.1 |2021-11-30 |CRAN (R 4.4.1) | |usethis |3.1.0 |2024-11-26 |CRAN (R 4.4.1) | |uuid |1.2-1 |2024-07-29 |CRAN (R 4.4.1) | +|V8 |6.0.3 |2025-03-26 |CRAN (R 4.4.1) | |vctrs |0.6.5 |2023-12-01 |CRAN (R 4.4.0) | |vroom |1.6.5 |2023-12-05 |CRAN (R 4.4.0) | |withr |3.0.2 |2024-10-28 |CRAN (R 4.4.1) | @@ -228,4 +245,5 @@ |xml2 |1.3.8 |2025-03-14 |CRAN (R 4.4.1) | |xtable |1.8-4 |2019-04-21 |CRAN (R 4.4.1) | |yaml |2.3.10 |2024-07-26 |CRAN (R 4.4.1) | +|yesno |0.1.3 |2024-07-26 |CRAN (R 4.4.1) | |zip |2.3.2 |2025-02-01 |CRAN (R 4.4.1) | diff --git a/inst/apps/FreesearchR/app.R b/inst/apps/FreesearchR/app.R index 2081160..a93a739 100644 --- a/inst/apps/FreesearchR/app.R +++ b/inst/apps/FreesearchR/app.R @@ -1,7 +1,7 @@ ######## -#### Current file: /Users/au301842/FreesearchR/app/libs.R +#### Current file: /Users/au301842/FreesearchR/app/libs.R ######## library(shiny) @@ -40,20 +40,20 @@ library(rlang) ######## -#### Current file: /Users/au301842/FreesearchR/app/functions.R +#### Current file: /Users/au301842/FreesearchR/app/functions.R ######## ######## -#### Current file: /Users/au301842/FreesearchR/R//app_version.R +#### Current file: /Users/au301842/FreesearchR/R//app_version.R ######## -app_version <- function()'25.7.1' +app_version <- function()'25.7.2' ######## -#### Current file: /Users/au301842/FreesearchR/R//baseline_table.R +#### Current file: /Users/au301842/FreesearchR/R//baseline_table.R ######## #' Print a flexible baseline characteristics table @@ -138,7 +138,7 @@ create_baseline <- function(data, ..., by.var, add.p = FALSE, add.overall = FALS ######## -#### Current file: /Users/au301842/FreesearchR/R//contrast_text.R +#### Current file: /Users/au301842/FreesearchR/R//contrast_text.R ######## #' @title Contrast Text Color @@ -194,7 +194,7 @@ contrast_text <- function(background, ######## -#### Current file: /Users/au301842/FreesearchR/R//correlations-module.R +#### Current file: /Users/au301842/FreesearchR/R//correlations-module.R ######## #' Data correlations evaluation module @@ -339,7 +339,7 @@ sentence_paste <- function(data, and.str = "and") { ######## -#### Current file: /Users/au301842/FreesearchR/R//create-column-mod.R +#### Current file: /Users/au301842/FreesearchR/R//create-column-mod.R ######## #' @title Create new column @@ -782,7 +782,7 @@ make_choices_with_infos <- function(data) { ######## -#### Current file: /Users/au301842/FreesearchR/R//custom_SelectInput.R +#### Current file: /Users/au301842/FreesearchR/R//custom_SelectInput.R ######## #' A selectizeInput customized for data frames with column labels @@ -976,7 +976,7 @@ vectorSelectInput <- function(inputId, ######## -#### Current file: /Users/au301842/FreesearchR/R//cut-variable-dates.R +#### Current file: /Users/au301842/FreesearchR/R//cut-variable-dates.R ######## #' Extended cutting function with fall-back to the native base::cut @@ -1595,7 +1595,7 @@ plot_histogram <- function(data, column=NULL, bins = 30, breaks = NULL, color = ######## -#### Current file: /Users/au301842/FreesearchR/R//data_plots.R +#### Current file: /Users/au301842/FreesearchR/R//data_plots.R ######## # source(here::here("functions.R")) @@ -2445,7 +2445,7 @@ clean_common_axis <- function(p, axis) { ######## -#### Current file: /Users/au301842/FreesearchR/R//data-import.R +#### Current file: /Users/au301842/FreesearchR/R//data-import.R ######## data_import_ui <- function(id) { @@ -2602,7 +2602,7 @@ data_import_demo_app <- function() { ######## -#### Current file: /Users/au301842/FreesearchR/R//data-summary.R +#### Current file: /Users/au301842/FreesearchR/R//data-summary.R ######## #' Data summary module @@ -3000,7 +3000,7 @@ get_var_icon <- function(data,class.type=c("class","type")){ ######## -#### Current file: /Users/au301842/FreesearchR/R//datagrid-infos-mod.R +#### Current file: /Users/au301842/FreesearchR/R//datagrid-infos-mod.R ######## @@ -3349,7 +3349,7 @@ construct_col_summary <- function(data) { ######## -#### Current file: /Users/au301842/FreesearchR/R//helpers.R +#### Current file: /Users/au301842/FreesearchR/R//helpers.R ######## #' Wrapper function to get function from character vector referring to function from namespace. Passed to 'do.call()' @@ -4023,14 +4023,14 @@ simple_snake <- function(data){ ######## -#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R +#### Current file: /Users/au301842/FreesearchR/R//hosted_version.R ######## -hosted_version <- function()'v25.7.1-250703' +hosted_version <- function()'v25.7.2-250703' ######## -#### Current file: /Users/au301842/FreesearchR/R//html_dependency_freesearchr.R +#### Current file: /Users/au301842/FreesearchR/R//html_dependency_freesearchr.R ######## html_dependency_FreesearchR <- function() { @@ -4045,7 +4045,7 @@ html_dependency_FreesearchR <- function() { ######## -#### Current file: /Users/au301842/FreesearchR/R//import-file-ext.R +#### Current file: /Users/au301842/FreesearchR/R//import-file-ext.R ######## #' @title Import data from a file @@ -4655,7 +4655,7 @@ import_file_demo_app <- function() { ######## -#### Current file: /Users/au301842/FreesearchR/R//launch_FreesearchR.R +#### Current file: /Users/au301842/FreesearchR/R//launch_FreesearchR.R ######## #' Easily launch the FreesearchR app @@ -4686,7 +4686,7 @@ launch_FreesearchR <- function(...){ ######## -#### Current file: /Users/au301842/FreesearchR/R//missings-module.R +#### Current file: /Users/au301842/FreesearchR/R//missings-module.R ######## #' Data correlations evaluation module @@ -4835,7 +4835,7 @@ compare_missings <- function(data,by_var){ ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_box.R +#### Current file: /Users/au301842/FreesearchR/R//plot_box.R ######## #' Beautiful box plot(s) @@ -4934,7 +4934,7 @@ plot_box_single <- function(data, pri, sec=NULL, seed = 2103) { ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_euler.R +#### Current file: /Users/au301842/FreesearchR/R//plot_euler.R ######## #' Area proportional venn diagrams @@ -5075,7 +5075,7 @@ plot_euler_single <- function(data) { ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_hbar.R +#### Current file: /Users/au301842/FreesearchR/R//plot_hbar.R ######## #' Nice horizontal stacked bars (Grotta bars) @@ -5175,7 +5175,7 @@ vertical_stacked_bars <- function(data, ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_ridge.R +#### Current file: /Users/au301842/FreesearchR/R//plot_ridge.R ######## #' Plot nice ridge plot @@ -5209,7 +5209,7 @@ plot_ridge <- function(data, x, y, z = NULL, ...) { ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_sankey.R +#### Current file: /Users/au301842/FreesearchR/R//plot_sankey.R ######## #' Readying data for sankey plot @@ -5442,7 +5442,7 @@ plot_sankey_single <- function(data, pri, sec, color.group = c("pri", "sec"), co ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_scatter.R +#### Current file: /Users/au301842/FreesearchR/R//plot_scatter.R ######## #' Beautiful violin plot @@ -5477,7 +5477,7 @@ plot_scatter <- function(data, pri, sec, ter = NULL) { ######## -#### Current file: /Users/au301842/FreesearchR/R//plot_violin.R +#### Current file: /Users/au301842/FreesearchR/R//plot_violin.R ######## #' Beatiful violin plot @@ -5512,7 +5512,7 @@ plot_violin <- function(data, pri, sec, ter = NULL) { ######## -#### Current file: /Users/au301842/FreesearchR/R//plot-download-module.R +#### Current file: /Users/au301842/FreesearchR/R//plot-download-module.R ######## plot_download_ui <- regression_ui <- function(id, ...) { @@ -5593,7 +5593,7 @@ plot_download_server <- function(id, ######## -#### Current file: /Users/au301842/FreesearchR/R//redcap_read_shiny_module.R +#### Current file: /Users/au301842/FreesearchR/R//redcap_read_shiny_module.R ######## #' Shiny module to browser and export REDCap data @@ -6289,7 +6289,7 @@ redcap_demo_app <- function() { ######## -#### Current file: /Users/au301842/FreesearchR/R//regression_model.R +#### Current file: /Users/au301842/FreesearchR/R//regression_model.R ######## #' Create a regression model programatically @@ -7016,7 +7016,7 @@ regression_model_uv_list <- function(data, ######## -#### Current file: /Users/au301842/FreesearchR/R//regression_plot.R +#### Current file: /Users/au301842/FreesearchR/R//regression_plot.R ######## #' Regression coef plot from gtsummary. Slightly modified to pass on arguments @@ -7182,7 +7182,7 @@ symmetrical_scale_x_log10 <- function(plot, breaks = c(1, 2, 3, 5, 10), ...) { ######## -#### Current file: /Users/au301842/FreesearchR/R//regression_table.R +#### Current file: /Users/au301842/FreesearchR/R//regression_table.R ######## #' Create table of regression model @@ -7371,7 +7371,7 @@ tbl_merge <- function(data) { ######## -#### Current file: /Users/au301842/FreesearchR/R//regression-module.R +#### Current file: /Users/au301842/FreesearchR/R//regression-module.R ######## ### On rewriting this module @@ -8059,7 +8059,7 @@ regression_server <- function(id, ######## -#### Current file: /Users/au301842/FreesearchR/R//report.R +#### Current file: /Users/au301842/FreesearchR/R//report.R ######## #' Split vector by an index and embed addition @@ -8147,7 +8147,7 @@ modify_qmd <- function(file, format) { ######## -#### Current file: /Users/au301842/FreesearchR/R//syntax_highlight.R +#### Current file: /Users/au301842/FreesearchR/R//syntax_highlight.R ######## ## Inpiration: @@ -8178,7 +8178,7 @@ html_code_wrap <- function(string,lang="r"){ ######## -#### Current file: /Users/au301842/FreesearchR/R//theme.R +#### Current file: /Users/au301842/FreesearchR/R//theme.R ######## #' Custom theme based on unity @@ -8297,7 +8297,7 @@ gg_theme_export <- function() { ######## -#### Current file: /Users/au301842/FreesearchR/R//update-factor-ext.R +#### Current file: /Users/au301842/FreesearchR/R//update-factor-ext.R ######## @@ -8594,7 +8594,7 @@ winbox_update_factor <- function(id, ######## -#### Current file: /Users/au301842/FreesearchR/R//update-variables-ext.R +#### Current file: /Users/au301842/FreesearchR/R//update-variables-ext.R ######## #' Select, rename and convert variables @@ -9406,7 +9406,7 @@ clean_date <- function(data) { ######## -#### Current file: /Users/au301842/FreesearchR/R//visual_summary.R +#### Current file: /Users/au301842/FreesearchR/R//visual_summary.R ######## #' Data correlations evaluation module @@ -9703,7 +9703,7 @@ unique_short <- function(data, max = 15) { ######## -#### Current file: /Users/au301842/FreesearchR/R//wide2long.R +#### Current file: /Users/au301842/FreesearchR/R//wide2long.R ######## #' Alternative pivoting method for easily pivoting based on name pattern @@ -9862,17 +9862,18 @@ grepl_fix <- function(data, pattern, type = c("prefix", "infix", "suffix")) { ######## -#### Current file: /Users/au301842/FreesearchR/dev/header_include.R +#### Current file: /Users/au301842/FreesearchR/dev/header_include.R ######## header_include <- function(){ shiny::tags$head( - tags$link(rel = "stylesheet", type = "text/css", href = "style.css")) + tags$link(rel = "stylesheet", type = "text/css", href = "style.css"), + tags$script(src="scripts.js")) } ######## -#### Current file: /Users/au301842/FreesearchR/dev/dev_banner.R +#### Current file: /Users/au301842/FreesearchR/dev/dev_banner.R ######## dev_banner <- function(){ @@ -9881,7 +9882,7 @@ dev_banner <- function(){ ######## -#### Current file: /Users/au301842/FreesearchR/app/ui.R +#### Current file: /Users/au301842/FreesearchR/app/ui.R ######## # ns <- NS(id) @@ -9918,7 +9919,7 @@ ui_elements <- list( ############################################################################## "import" = bslib::nav_panel( title = "Get started", - icon = shiny::icon("upload"), + icon = shiny::icon("play"), shiny::fluidRow( shiny::column(width = 2), shiny::column( @@ -10486,17 +10487,35 @@ ui <- bslib::page_fixed( header_include(), ## Automatically close drop-downs on navigation ## Thanks to claude.ai - tags$script(" - $(document).on('shown.bs.tab', '#main_panel', function(e) { - // Close dropdown in this specific navset only - $('#main_panel .dropdown-menu').removeClass('show'); - $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); - - // Close navbar collapse (burger menu) - $('#main_panel .navbar-collapse collapse').removeClass('show'); - $('#main_panel .navbar-toggle').removeClass('collapsed').attr('aria-expanded', 'false'); - }); - "), + # tags$script(" + # $(document).on('shown.bs.tab', '#main_panel', function(e) { + # // Close dropdown in this specific navset only + # $('#main_panel .dropdown-menu').removeClass('show'); + # $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); + # }); + # + # $(document).on('shiny:sessioninitialized', function() { + # // Function to collapse navbar on mobile + # function collapseNavbar() { + # var navbar = $('.navbar-collapse'); + # if (navbar.hasClass('show')) { + # navbar.removeClass('show'); + # $('.navbar-toggler').addClass('collapsed'); + # $('.navbar-toggler').attr('aria-expanded', 'false'); + # } + # } + # + # // Add click event to navigation tabs + # $(document).on('click', '.nav-link[data-bs-toggle=\"tab\"]', function() { + # setTimeout(collapseNavbar, 10); + # }); + # + # // Also handle direct clicks on nav items + # $(document).on('click', '.navbar-nav .nav-link', function() { + # setTimeout(collapseNavbar, 10); + # }); + # }); + # "), ## This adds the actual favicon ## png and ico versions are kept for compatibility shiny::tags$head(tags$link(rel = "shortcut icon", href = "favicon.svg")), @@ -10543,7 +10562,7 @@ ui <- bslib::page_fixed( ######## -#### Current file: /Users/au301842/FreesearchR/app/server.R +#### Current file: /Users/au301842/FreesearchR/app/server.R ######## data(mtcars) @@ -11350,7 +11369,7 @@ server <- function(input, output, session) { ######## -#### Current file: /Users/au301842/FreesearchR/app/launch.R +#### Current file: /Users/au301842/FreesearchR/app/launch.R ######## shinyApp(ui, server) diff --git a/inst/apps/FreesearchR/www/scripts.js b/inst/apps/FreesearchR/www/scripts.js new file mode 100644 index 0000000..3382b4e --- /dev/null +++ b/inst/apps/FreesearchR/www/scripts.js @@ -0,0 +1,29 @@ +// Automatically close drop-downs on navigation +// Thanks to claude.ai +$(document).on('shown.bs.tab', '#main_panel', function(e) { + // Close dropdown in this specific navset only + $('#main_panel .dropdown-menu').removeClass('show'); + $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); +}); + +$(document).on('shiny:sessioninitialized', function() { +// Function to collapse navbar on mobile +function collapseNavbar() { + var navbar = $('.navbar-collapse'); + if (navbar.hasClass('show')) { + navbar.removeClass('show'); + $('.navbar-toggler').addClass('collapsed'); + $('.navbar-toggler').attr('aria-expanded', 'false'); + } + } + + // Add click event to navigation tabs + $(document).on('click', '.nav-link[data-bs-toggle=\"tab\"]', function() { + setTimeout(collapseNavbar, 10); + }); + + // Also handle direct clicks on nav items + $(document).on('click', '.navbar-nav .nav-link', function() { + setTimeout(collapseNavbar, 10); + }); +}); diff --git a/inst/assets/js/FreesearchR.js b/inst/assets/js/FreesearchR.js new file mode 100644 index 0000000..3382b4e --- /dev/null +++ b/inst/assets/js/FreesearchR.js @@ -0,0 +1,29 @@ +// Automatically close drop-downs on navigation +// Thanks to claude.ai +$(document).on('shown.bs.tab', '#main_panel', function(e) { + // Close dropdown in this specific navset only + $('#main_panel .dropdown-menu').removeClass('show'); + $('#main_panel .dropdown-toggle').removeClass('show').attr('aria-expanded', 'false'); +}); + +$(document).on('shiny:sessioninitialized', function() { +// Function to collapse navbar on mobile +function collapseNavbar() { + var navbar = $('.navbar-collapse'); + if (navbar.hasClass('show')) { + navbar.removeClass('show'); + $('.navbar-toggler').addClass('collapsed'); + $('.navbar-toggler').attr('aria-expanded', 'false'); + } + } + + // Add click event to navigation tabs + $(document).on('click', '.nav-link[data-bs-toggle=\"tab\"]', function() { + setTimeout(collapseNavbar, 10); + }); + + // Also handle direct clicks on nav items + $(document).on('click', '.navbar-nav .nav-link', function() { + setTimeout(collapseNavbar, 10); + }); +});