external docs linked and updated

This commit is contained in:
Andreas Gammelgaard Damsbo 2025-01-16 12:23:39 +01:00
parent eb93f501ca
commit 83fac94266
No known key found for this signature in database
9 changed files with 103 additions and 154 deletions

View file

@ -8,20 +8,21 @@ custom_theme <- function(...,
version = 5, version = 5,
primary = "#1E4A8F", primary = "#1E4A8F",
secondary = "#FF6F61", secondary = "#FF6F61",
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans",wght = "700"),
code_font = bslib::font_google("Open Sans")
# success = "#1E4A8F", # success = "#1E4A8F",
# info = , # info = ,
# warning = , # warning = ,
# danger = , # danger = ,
# fg = "#000", # fg = "#000",
# bg="#fff", # bg="#fff",
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
# base_font = bslib::font_google("Alice"), # base_font = bslib::font_google("Alice"),
# heading_font = bslib::font_google("Jost", wght = "800"), # heading_font = bslib::font_google("Jost", wght = "800"),
# heading_font = bslib::font_google("Noto Serif"), # heading_font = bslib::font_google("Noto Serif"),
# heading_font = bslib::font_google("Alice"), # heading_font = bslib::font_google("Alice"),
heading_font = bslib::font_google("Public Sans",wght = "700"), ){
code_font = bslib::font_google("Open Sans")){
bslib::bs_theme( bslib::bs_theme(
..., ...,
version = version, version = version,

View file

@ -7,9 +7,9 @@
[![freesearcheR](https://img.shields.io/badge/Shiny-shinyapps.io-blue?style=flat&labelColor=white&logo=RStudio&logoColor=blue)](https://agdamsbo.shinyapps.io/freesearcheR/) [![freesearcheR](https://img.shields.io/badge/Shiny-shinyapps.io-blue?style=flat&labelColor=white&logo=RStudio&logoColor=blue)](https://agdamsbo.shinyapps.io/freesearcheR/)
<!-- badges: end --> <!-- badges: end -->
This package is the backbone of the free and open browser based data exploration and analysis tool with publication ready output. This package is the backbone of the ***freesearcheR***, a free and open-source browser based data exploration and analysis tool for clinicians and researchers with publication ready output.
This package and the ***freesearcheR***-tool is part of a large project to democratize health data analysis and removing barriers for clinicians to engage in health research. This package and the ***freesearcheR***-tool is part of a larger initiative to democratize health data analysis and remove barriers for clinicians to engage in health research.
the ***freesearcheR***-tool is online and accessible here: [link to the app freely hosted on shinyapps.io](https://agdamsbo.shinyapps.io/freesearcheR/). All feedback is welcome and can be shared as a GitHub issue. the ***freesearcheR***-tool is online and accessible here: [link to the app freely hosted on shinyapps.io](https://agdamsbo.shinyapps.io/freesearcheR/). All feedback is welcome and can be shared as a GitHub issue.
@ -17,6 +17,10 @@ Initiatives for funding continued development of the tool and surrounding initia
## Roadmap ## Roadmap
The current state of the app is considered experimental, and a lot of things are still changing. It is, however, in a usable state, with basic functions available to the user.
Below are some (the actual list is quite long and growing) of the planned features and improvements:
- [ ] Stratified analyses - [ ] Stratified analyses
- Additional study designs: - Additional study designs:
@ -32,6 +36,12 @@ Initiatives for funding continued development of the tool and surrounding initia
- [x] Add histograms for data distribution. 2025-01-16 - [x] Add histograms for data distribution. 2025-01-16
- [x] Option to edit labels. 2025-01-16 - [x] Option to edit labels. 2025-01-16
- More output controls
- [ ] Theming output tables
- [ ] Select analyses to include in report
- [ ] Plot regression analyses results - [ ] Plot regression analyses results

View file

@ -1,4 +1,11 @@
url: https://agdamsbo.github.io/freesearcheR/ url: https://agdamsbo.github.io/freesearcheR/
template: template:
bootstrap: 5 bslib:
version: 5
primary: "#1E4A8F"
secondary: "#FF6F61"
bootswatch: "united"
base_font: bslib::font_google("Montserrat")
heading_font: bslib::font_google("Public Sans",wght: "700")
code_font: bslib::font_google("Open Sans")

View file

@ -123,7 +123,7 @@ library(shiny)
# structure(match(splitter, names(labs)), levels = labs, class = "factor") # structure(match(splitter, names(labs)), levels = labs, class = "factor")
# } # }
#' Title #' Extended cutting function
#' #'
#' @param x an object inheriting from class "hms" #' @param x an object inheriting from class "hms"
#' @param ... passed on #' @param ... passed on
@ -808,7 +808,7 @@ add_sparkline <- function(grid, column = "vals", color.main = "#2a8484", color.s
#' #'
#' @param data vector #' @param data vector
#' #'
#' @returns #' @returns logical
#' @export #' @export
#' #'
#' @examples #' @examples
@ -915,6 +915,10 @@ create_overview_datagrid <- function(data) {
#' @export #' @export
#' #'
#' @examples #' @examples
#' mtcars |>
#' overview_vars() |>
#' toastui::datagrid() |>
#' add_class_icon()
add_class_icon <- function(grid, column = "class") { add_class_icon <- function(grid, column = "class") {
out <- toastui::grid_format( out <- toastui::grid_format(
grid = grid, grid = grid,
@ -2180,20 +2184,21 @@ custom_theme <- function(...,
version = 5, version = 5,
primary = "#1E4A8F", primary = "#1E4A8F",
secondary = "#FF6F61", secondary = "#FF6F61",
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
heading_font = bslib::font_google("Public Sans",wght = "700"),
code_font = bslib::font_google("Open Sans")
# success = "#1E4A8F", # success = "#1E4A8F",
# info = , # info = ,
# warning = , # warning = ,
# danger = , # danger = ,
# fg = "#000", # fg = "#000",
# bg="#fff", # bg="#fff",
bootswatch = "united",
base_font = bslib::font_google("Montserrat"),
# base_font = bslib::font_google("Alice"), # base_font = bslib::font_google("Alice"),
# heading_font = bslib::font_google("Jost", wght = "800"), # heading_font = bslib::font_google("Jost", wght = "800"),
# heading_font = bslib::font_google("Noto Serif"), # heading_font = bslib::font_google("Noto Serif"),
# heading_font = bslib::font_google("Alice"), # heading_font = bslib::font_google("Alice"),
heading_font = bslib::font_google("Public Sans",wght = "700"), ){
code_font = bslib::font_google("Open Sans")){
bslib::bs_theme( bslib::bs_theme(
..., ...,
version = version, version = version,
@ -2599,8 +2604,14 @@ add_var_toset <- function(data, var_name, default = "") {
data[, datanames] data[, datanames]
} }
#' @importFrom toastui datagrid grid_columns grid_format grid_style_column #' Modified from the datamods pacakge
#' grid_style_column grid_editor grid_editor_opts grid_selection_row #'
#' @param data data
#'
#' @param height height
#' @param selectionId selectionId
#' @param buttonId buttonId
#'
#' @examples #' @examples
#' mtcars |> #' mtcars |>
#' summary_vars() |> #' summary_vars() |>
@ -3018,9 +3029,10 @@ ui_elements <- list(
shiny::column( shiny::column(
width = 9, width = 9,
shiny::tags$p( shiny::tags$p(
"Below is a short summary table of the provided data. "Below is a short summary table of the provided data.
On the right hand side you have the option to create filters. On the right hand side you have the option to create filters.
At the bottom you'll find a raw overview of the original vs the modified data.") At the bottom you'll find a raw overview of the original vs the modified data."
)
) )
), ),
fluidRow( fluidRow(
@ -3121,8 +3133,8 @@ ui_elements <- list(
title = "Browser", title = "Browser",
tags$h3("Browse the provided data"), tags$h3("Browse the provided data"),
shiny::tags$p( shiny::tags$p(
"Below is a data table with all the modified data provided to browse and understand data." "Below is a data table with all the modified data provided to browse and understand data."
), ),
shinyWidgets::html_dependency_winbox(), shinyWidgets::html_dependency_winbox(),
# fluidRow( # fluidRow(
# column( # column(
@ -3306,12 +3318,21 @@ ui_elements <- list(
######### Documentation panel ######### Documentation panel
######### #########
############################################################################## ##############################################################################
"docs" = bslib::nav_panel( "docs" = bslib::nav_item(
title = "Documentation", # shiny::img(shiny::icon("book")),
# shiny::tags$iframe("www/docs.html", height=600, width=535), shiny::tags$a(
shiny::htmlOutput("docs_file"), href = "https://agdamsbo.github.io/freesearcheR/",
shiny::br() "Docs (external)",
target = "_blank",
rel = "noopener noreferrer"
) )
)
# bslib::nav_panel(
# title = "Documentation",
# # shiny::tags$iframe("www/docs.html", height=600, width=535),
# shiny::htmlOutput("docs_file"),
# shiny::br()
# )
) )
# Initial attempt at creating light and dark versions # Initial attempt at creating light and dark versions
@ -3344,6 +3365,7 @@ ui <- bslib::page_fixed(
ui_elements$import, ui_elements$import,
ui_elements$overview, ui_elements$overview,
ui_elements$analyze, ui_elements$analyze,
bslib::nav_spacer(),
ui_elements$docs, ui_elements$docs,
# bslib::nav_spacer(), # bslib::nav_spacer(),
# bslib::nav_item(shinyWidgets::circleButton(inputId = "mode", icon = icon("moon"),status = "primary")), # bslib::nav_item(shinyWidgets::circleButton(inputId = "mode", icon = icon("moon"),status = "primary")),

View file

@ -93,9 +93,10 @@ ui_elements <- list(
shiny::column( shiny::column(
width = 9, width = 9,
shiny::tags$p( shiny::tags$p(
"Below is a short summary table of the provided data. "Below is a short summary table of the provided data.
On the right hand side you have the option to create filters. On the right hand side you have the option to create filters.
At the bottom you'll find a raw overview of the original vs the modified data.") At the bottom you'll find a raw overview of the original vs the modified data."
)
) )
), ),
fluidRow( fluidRow(
@ -196,8 +197,8 @@ ui_elements <- list(
title = "Browser", title = "Browser",
tags$h3("Browse the provided data"), tags$h3("Browse the provided data"),
shiny::tags$p( shiny::tags$p(
"Below is a data table with all the modified data provided to browse and understand data." "Below is a data table with all the modified data provided to browse and understand data."
), ),
shinyWidgets::html_dependency_winbox(), shinyWidgets::html_dependency_winbox(),
# fluidRow( # fluidRow(
# column( # column(
@ -381,12 +382,21 @@ ui_elements <- list(
######### Documentation panel ######### Documentation panel
######### #########
############################################################################## ##############################################################################
"docs" = bslib::nav_panel( "docs" = bslib::nav_item(
title = "Documentation", # shiny::img(shiny::icon("book")),
# shiny::tags$iframe("www/docs.html", height=600, width=535), shiny::tags$a(
shiny::htmlOutput("docs_file"), href = "https://agdamsbo.github.io/freesearcheR/",
shiny::br() "Docs (external)",
target = "_blank",
rel = "noopener noreferrer"
) )
)
# bslib::nav_panel(
# title = "Documentation",
# # shiny::tags$iframe("www/docs.html", height=600, width=535),
# shiny::htmlOutput("docs_file"),
# shiny::br()
# )
) )
# Initial attempt at creating light and dark versions # Initial attempt at creating light and dark versions
@ -419,6 +429,7 @@ ui <- bslib::page_fixed(
ui_elements$import, ui_elements$import,
ui_elements$overview, ui_elements$overview,
ui_elements$analyze, ui_elements$analyze,
bslib::nav_spacer(),
ui_elements$docs, ui_elements$docs,
# bslib::nav_spacer(), # bslib::nav_spacer(),
# bslib::nav_item(shinyWidgets::circleButton(inputId = "mode", icon = icon("moon"),status = "primary")), # bslib::nav_item(shinyWidgets::circleButton(inputId = "mode", icon = icon("moon"),status = "primary")),

View file

@ -1,69 +0,0 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"><head>
<meta charset="utf-8">
<meta name="generator" content="quarto-1.5.57">
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes">
<title>freesearcheR platform documentation</title>
<style>
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
ul.task-list{list-style: none;}
ul.task-list li input[type="checkbox"] {
width: 0.8em;
margin: 0 0.8em 0.2em -1em; vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
</style>
</head>
<body>
<header id="title-block-header">
<h1 class="title"><strong><em>freesearcheR</em></strong> platform documentation</h1>
</header>
<h1 id="welcome">Welcome!</h1>
<p>So glad to see you here! Welcome to test this early concept of a platform to easily explore, manipulate and analyse clinical data.</p>
<p>Below will be a more detailed description of the included features and possibilities, as well as the planned and possible feature additions.</p>
<h2 id="contribute">Contribute</h2>
<p>Contributions are very welcome. If you find anything odd, or you think of features to add or remove, please <a href="https://github.com/agdamsbo/freesearcheR/issues">share and report on the project page on GitHub</a>.</p>
<h2 id="roadmap">Roadmap</h2>
<ul>
<li><p><label><input type="checkbox">Stratified analyses</label></p></li>
<li><p>Additional study designs:</p>
<ul class="task-list">
<li><p><label><input type="checkbox" checked>Cross-sectional data analyses</label></p></li>
<li><p><label><input type="checkbox">Longitudinal data analyses</label></p></li>
<li><p><label><input type="checkbox">Survival analysis</label></p></li>
</ul></li>
<li><p>More detailed variable browser</p>
<ul class="task-list">
<li><p><label><input type="checkbox">Add histograms for data distribution</label></p></li>
<li><p><label><input type="checkbox">Option to edit variable labels for nicer tables</label></p></li>
</ul></li>
<li><p><label><input type="checkbox">Plot regression analyses results</label></p></li>
<li><p><label><input type="checkbox" checked>Export modified data. 2025-01-09</label></p></li>
<li><p><label><input type="checkbox">Include reproducible code for all steps</label></p></li>
<li><p><label><input type="checkbox" checked><del>Modify factor levels</del> Factor level modification is possible through converting factors to numeric &gt; cutting numeric with desired fixed values. 2024-12-12</label></p></li>
<li><p><label><input type="checkbox" checked>More options for date/datetime/time grouping/factoring. Included weekday and month-only options. 2024-12-12</label></p></li>
</ul>
</body></html>

View file

@ -1,45 +0,0 @@
---
title: "***freesearcheR*** platform documentation"
format:
html:
self-contained: true
minimal: true
---
# Welcome!
So glad to see you here! Welcome to test this early concept of a platform to easily explore, manipulate and analyse clinical data.
Below will be a more detailed description of the included features and possibilities, as well as the planned and possible feature additions.
## Contribute
Contributions are very welcome. If you find anything odd, or you think of features to add or remove, please [share and report on the project page on GitHub](https://github.com/agdamsbo/freesearcheR/issues).
## Roadmap
- [ ] Stratified analyses
- Additional study designs:
- [x] Cross-sectional data analyses
- [ ] Longitudinal data analyses
- [ ] Survival analysis
- More detailed variable browser
- [ ] Add histograms for data distribution
- [ ] Option to edit variable labels for nicer tables
- [ ] Plot regression analyses results
- [x] Export modified data. 2025-01-09
- [ ] Include reproducible code for all steps
- [x] ~~Modify factor levels~~ Factor level modification is possible through converting factors to numeric > cutting numeric with desired fixed values. 2024-12-12
- [x] More options for date/datetime/time grouping/factoring. Included weekday and month-only options. 2024-12-12

View file

@ -354,18 +354,18 @@ display: none;
<div id="welcome" class="section level1"> <div id="welcome" class="section level1">
<h1>Welcome</h1> <h1>Welcome</h1>
<p>This is the <strong><em>freesearchR</em></strong> web data analysis <p>This is the <strong><em>freesearcheR</em></strong> web data analysis
tool. We intend the <strong><em>freesearchR</em></strong> to be a tool. We intend the <strong><em>freesearcheR</em></strong> to be a
powerful and free tool for easy data evaluation and analysis at the powerful and free tool for easy data evaluation and analysis at the
hands of the clinician.</p> hands of the clinician.</p>
<p>By intention, this tool has been designed to be simple to use with a <p>By intention, this tool has been designed to be simple to use with a
minimum of mandatory options to keep the workflow streamlined, while minimum of mandatory options to keep the workflow streamlined, while
also including a few options to go even further.</p> also including a few options to go even further.</p>
<p>There are four simple steps to go through:</p> <p>There are four simple steps to go through (see corresponding tabs in
the top):</p>
<ol style="list-style-type: decimal"> <ol style="list-style-type: decimal">
<li><p><a onclick="Shiny.onInputChange(&#39;tab&#39;, &#39;widgets&#39;);">“Import <li><p>Import data (a spreadsheet/file on your machine, direct export
data”</a> (a spreadsheet/file on your machine, direct export from a from a REDCap server, or a local file provided with a package) to get
REDCap server, or a local file provided with a package) to get
started.</p></li> started.</p></li>
<li><p>An <em>optional</em> step of data modification (change variable <li><p>An <em>optional</em> step of data modification (change variable
classes and creating categorical variables (factors) from numeric or classes and creating categorical variables (factors) from numeric or
@ -379,8 +379,16 @@ compare variables)</p></li>
depending on specified outcome variable</p></li> depending on specified outcome variable</p></li>
<li><p>Evaluation of model assumptions</p></li> <li><p>Evaluation of model assumptions</p></li>
</ul></li> </ul></li>
<li><p>Export the the analyses results as for MS Word or <a href="https://www.libreoffice.org/">LibreOffice</a>.</p></li> <li><p>Export the the analyses results for MS Word or <a href="https://www.libreoffice.org/">LibreOffice</a> as well as the data
with preserved metadata.</p></li>
</ol> </ol>
<p>Have a look at the <a href>documentations page</a> for further
project description. If youre interested in the source code, then go
on, <a href="https://github.com/agdamsbo/freesearcheR">have a
look</a>!</p>
<p>If you encounter anything strange or the app doesnt act as expected.
Please <a href="https://github.com/agdamsbo/freesearcheR/issues">report
on Github</a>.</p>
</div> </div>

View file

@ -19,3 +19,7 @@ There are four simple steps to go through (see corresponding tabs in the top):
- Evaluation of model assumptions - Evaluation of model assumptions
4. Export the the analyses results for MS Word or [LibreOffice](https://www.libreoffice.org/) as well as the data with preserved metadata. 4. Export the the analyses results for MS Word or [LibreOffice](https://www.libreoffice.org/) as well as the data with preserved metadata.
Have a look at the [documentations page]() for further project description. If you're interested in the source code, then go on, [have a look](https://github.com/agdamsbo/freesearcheR)!
If you encounter anything strange or the app doesn't act as expected. Please [report on Github](https://github.com/agdamsbo/freesearcheR/issues).