mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-21 13:00:23 +01:00
moving functions from app to fix dependencies
This commit is contained in:
parent
a896bf4e76
commit
f094394933
11
DESCRIPTION
11
DESCRIPTION
@ -29,15 +29,11 @@ Suggests:
|
||||
Hmisc,
|
||||
knitr,
|
||||
rmarkdown,
|
||||
ggplot2,
|
||||
here,
|
||||
styler,
|
||||
devtools,
|
||||
roxygen2,
|
||||
spelling,
|
||||
glue,
|
||||
rhub,
|
||||
bslib
|
||||
rhub
|
||||
License: GPL (>= 3)
|
||||
Encoding: UTF-8
|
||||
LazyData: true
|
||||
@ -61,7 +57,10 @@ Imports:
|
||||
readODS,
|
||||
forcats,
|
||||
vctrs,
|
||||
gt
|
||||
gt,
|
||||
bslib,
|
||||
here,
|
||||
glue
|
||||
Collate:
|
||||
'REDCapCAST-package.R'
|
||||
'utils.r'
|
||||
|
@ -39,6 +39,7 @@ export(html_tag_wrap)
|
||||
export(is_repeated_longitudinal)
|
||||
export(match_fields_to_form)
|
||||
export(named_levels)
|
||||
export(nav_bar_page)
|
||||
export(numchar2fct)
|
||||
export(parse_data)
|
||||
export(process_user_input)
|
||||
|
149
R/shiny_cast.R
149
R/shiny_cast.R
@ -89,7 +89,7 @@ cast_data_overview <- function(data){
|
||||
stopifnot("REDCapCAST" %in% class(data))
|
||||
data |>
|
||||
purrr::pluck("data") |>
|
||||
head(20) |>
|
||||
utils::head(20) |>
|
||||
# dplyr::tibble() |>
|
||||
gt::gt() |>
|
||||
gt::tab_style(
|
||||
@ -144,3 +144,150 @@ cast_meta_overview <- function(data){
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
#' Nav_bar defining function for shiny ui
|
||||
#'
|
||||
#' @return shiny object
|
||||
#' @export
|
||||
#'
|
||||
nav_bar_page <- function(){
|
||||
bslib::page_navbar(
|
||||
title = "Easy REDCap database creation",
|
||||
sidebar = bslib::sidebar(
|
||||
width = 300,
|
||||
shiny::h5("Metadata casting"),
|
||||
shiny::fileInput(
|
||||
inputId = "ds",
|
||||
label = "Upload spreadsheet",
|
||||
multiple = FALSE,
|
||||
accept = c(
|
||||
".csv",
|
||||
".xls",
|
||||
".xlsx",
|
||||
".dta",
|
||||
".rds",
|
||||
".ods"
|
||||
)
|
||||
),
|
||||
# shiny::actionButton(
|
||||
# inputId = "load_data",
|
||||
# label = "Load data",
|
||||
# icon = shiny::icon("circle-down")
|
||||
# ),
|
||||
shiny::helpText("Have a look at the preview panels to validate the data dictionary and imported data."),
|
||||
# For some odd reason this only unfolds when the preview panel is shown..
|
||||
# This has been solved by adding an arbitrary button to load data - which was abandoned again
|
||||
shiny::conditionalPanel(
|
||||
condition = "output.uploaded=='yes'",
|
||||
shiny::radioButtons(
|
||||
inputId = "add_id",
|
||||
label = "Add ID, or use first column?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"First column" = "no",
|
||||
"Add ID" = "yes",
|
||||
"No ID" = "none"
|
||||
)
|
||||
),
|
||||
shiny::radioButtons(
|
||||
inputId = "specify_factors",
|
||||
label = "Specify categorical variables?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"No" = "no",
|
||||
"Yes" = "yes"
|
||||
)
|
||||
),
|
||||
shiny::conditionalPanel(
|
||||
condition = "input.specify_factors=='yes'",
|
||||
shiny::uiOutput("factor_vars")
|
||||
),
|
||||
# condition = "input.load_data",
|
||||
# shiny::helpText("Below you can download the dataset formatted for upload and the
|
||||
# corresponding data dictionary for a new data base, if you want to upload manually."),
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadData", label = "Download renamed data"),
|
||||
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadMeta", label = "Download data dictionary"),
|
||||
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadInstrument", label = "Download as instrument"),
|
||||
|
||||
# Horizontal line ----
|
||||
shiny::tags$hr(),
|
||||
shiny::radioButtons(
|
||||
inputId = "upload_redcap",
|
||||
label = "Upload directly to REDCap server?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"No" = "no",
|
||||
"Yes" = "yes"
|
||||
)
|
||||
),
|
||||
shiny::conditionalPanel(
|
||||
condition = "input.upload_redcap=='yes'",
|
||||
shiny::h4("2) Data base upload"),
|
||||
shiny::helpText("This tool is usable for now. Detailed instructions are coming."),
|
||||
shiny::textInput(
|
||||
inputId = "uri",
|
||||
label = "URI",
|
||||
value = "https://redcap.your.institution/api/"
|
||||
),
|
||||
shiny::textInput(
|
||||
inputId = "api",
|
||||
label = "API key",
|
||||
value = ""
|
||||
),
|
||||
shiny::helpText("An API key is an access key to the REDCap database. Please", shiny::a("see here for directions", href = "https://www.iths.org/news/redcap-tip/redcap-api-101/"), " to obtain an API key for your project."),
|
||||
shiny::actionButton(
|
||||
inputId = "upload.meta",
|
||||
label = "Upload datadictionary", icon = shiny::icon("book-bookmark")
|
||||
),
|
||||
shiny::helpText("Please note, that before uploading any real data, put your project
|
||||
into production mode."),
|
||||
shiny::actionButton(
|
||||
inputId = "upload.data",
|
||||
label = "Upload data", icon = shiny::icon("upload")
|
||||
)
|
||||
)
|
||||
),
|
||||
shiny::br(),
|
||||
shiny::br(),
|
||||
shiny::br(),
|
||||
shiny::p(
|
||||
"License: ", shiny::a("GPL-3+", href = "https://agdamsbo.github.io/REDCapCAST/LICENSE.html")
|
||||
),
|
||||
shiny::p(
|
||||
shiny::a("Package documentation", href = "https://agdamsbo.github.io/REDCapCAST")
|
||||
)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Intro",
|
||||
shiny::markdown(readLines("www/SHINYCAST.md")),
|
||||
shiny::br()
|
||||
),
|
||||
# bslib::nav_spacer(),
|
||||
bslib::nav_panel(
|
||||
title = "Data preview",
|
||||
gt::gt_output(outputId = "data.tbl")
|
||||
# shiny::htmlOutput(outputId = "data.tbl", container = shiny::span)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Dictionary overview",
|
||||
gt::gt_output(outputId = "meta.tbl")
|
||||
# shiny::htmlOutput(outputId = "meta.tbl", container = shiny::span)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Upload",
|
||||
shiny::h3("Meta upload overview"),
|
||||
shiny::textOutput(outputId = "upload.meta.print"),
|
||||
shiny::h3("Data upload overview"),
|
||||
shiny::textOutput(outputId = "upload.data.print")
|
||||
)
|
||||
)
|
||||
}
|
||||
|
@ -5,6 +5,6 @@ account: agdamsbo
|
||||
server: shinyapps.io
|
||||
hostUrl: https://api.shinyapps.io/v1
|
||||
appId: 11351429
|
||||
bundleId: 9392220
|
||||
bundleId: 9392320
|
||||
url: https://agdamsbo.shinyapps.io/redcapcast/
|
||||
version: 1
|
||||
|
@ -5,7 +5,6 @@ library(haven)
|
||||
library(readODS)
|
||||
library(readr)
|
||||
library(dplyr)
|
||||
library(here)
|
||||
library(devtools)
|
||||
if (!requireNamespace("REDCapCAST")) {
|
||||
devtools::install_github("agdamsbo/REDCapCAST", quiet = TRUE, upgrade = "never")
|
||||
|
@ -2,143 +2,6 @@ ui <-
|
||||
bslib::page(
|
||||
theme = bslib::bs_theme(preset = "united"),
|
||||
title = "REDCap database creator",
|
||||
bslib::page_navbar(
|
||||
title = "Easy REDCap database creation",
|
||||
sidebar = bslib::sidebar(
|
||||
width = 300,
|
||||
shiny::h5("Metadata casting"),
|
||||
shiny::fileInput(
|
||||
inputId = "ds",
|
||||
label = "Upload spreadsheet",
|
||||
multiple = FALSE,
|
||||
accept = c(
|
||||
".csv",
|
||||
".xls",
|
||||
".xlsx",
|
||||
".dta",
|
||||
".rds",
|
||||
".ods"
|
||||
)
|
||||
),
|
||||
# shiny::actionButton(
|
||||
# inputId = "load_data",
|
||||
# label = "Load data",
|
||||
# icon = shiny::icon("circle-down")
|
||||
# ),
|
||||
shiny::helpText("Have a look at the preview panels to validate the data dictionary and imported data."),
|
||||
# For some odd reason this only unfolds when the preview panel is shown..
|
||||
# This has been solved by adding an arbitrary button to load data - which was abandoned again
|
||||
shiny::conditionalPanel(
|
||||
condition = "output.uploaded=='yes'",
|
||||
shiny::radioButtons(
|
||||
inputId = "add_id",
|
||||
label = "Add ID, or use first column?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"First column" = "no",
|
||||
"Add ID" = "yes",
|
||||
"No ID" = "none"
|
||||
)
|
||||
),
|
||||
shiny::radioButtons(
|
||||
inputId = "specify_factors",
|
||||
label = "Specify categorical variables?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"No" = "no",
|
||||
"Yes" = "yes"
|
||||
)
|
||||
),
|
||||
shiny::conditionalPanel(
|
||||
condition = "input.specify_factors=='yes'",
|
||||
uiOutput("factor_vars")
|
||||
),
|
||||
# condition = "input.load_data",
|
||||
# shiny::helpText("Below you can download the dataset formatted for upload and the
|
||||
# corresponding data dictionary for a new data base, if you want to upload manually."),
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadData", label = "Download renamed data"),
|
||||
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadMeta", label = "Download data dictionary"),
|
||||
|
||||
# Button
|
||||
shiny::downloadButton(outputId = "downloadInstrument", label = "Download as instrument"),
|
||||
|
||||
# Horizontal line ----
|
||||
shiny::tags$hr(),
|
||||
shiny::radioButtons(
|
||||
inputId = "upload_redcap",
|
||||
label = "Upload directly to REDCap server?",
|
||||
selected = "no",
|
||||
inline = TRUE,
|
||||
choices = list(
|
||||
"No" = "no",
|
||||
"Yes" = "yes"
|
||||
)
|
||||
),
|
||||
shiny::conditionalPanel(
|
||||
condition = "input.upload_redcap=='yes'",
|
||||
shiny::h4("2) Data base upload"),
|
||||
shiny::helpText("This tool is usable for now. Detailed instructions are coming."),
|
||||
shiny::textInput(
|
||||
inputId = "uri",
|
||||
label = "URI",
|
||||
value = "https://redcap.your.institution/api/"
|
||||
),
|
||||
shiny::textInput(
|
||||
inputId = "api",
|
||||
label = "API key",
|
||||
value = ""
|
||||
),
|
||||
shiny::helpText("An API key is an access key to the REDCap database. Please", shiny::a("see here for directions", href = "https://www.iths.org/news/redcap-tip/redcap-api-101/"), " to obtain an API key for your project."),
|
||||
shiny::actionButton(
|
||||
inputId = "upload.meta",
|
||||
label = "Upload datadictionary", icon = shiny::icon("book-bookmark")
|
||||
),
|
||||
shiny::helpText("Please note, that before uploading any real data, put your project
|
||||
into production mode."),
|
||||
shiny::actionButton(
|
||||
inputId = "upload.data",
|
||||
label = "Upload data", icon = shiny::icon("upload")
|
||||
)
|
||||
)
|
||||
),
|
||||
shiny::br(),
|
||||
shiny::br(),
|
||||
shiny::br(),
|
||||
shiny::p(
|
||||
"License: ", shiny::a("GPL-3+", href = "https://agdamsbo.github.io/REDCapCAST/LICENSE.html")
|
||||
),
|
||||
shiny::p(
|
||||
shiny::a("Package documentation", href = "https://agdamsbo.github.io/REDCapCAST")
|
||||
)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Intro",
|
||||
shiny::markdown(readLines("www/SHINYCAST.md")),
|
||||
shiny::br()
|
||||
),
|
||||
# bslib::nav_spacer(),
|
||||
bslib::nav_panel(
|
||||
title = "Data preview",
|
||||
gt::gt_output(outputId = "data.tbl")
|
||||
# shiny::htmlOutput(outputId = "data.tbl", container = shiny::span)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Dictionary overview",
|
||||
gt::gt_output(outputId = "meta.tbl")
|
||||
# shiny::htmlOutput(outputId = "meta.tbl", container = shiny::span)
|
||||
),
|
||||
bslib::nav_panel(
|
||||
title = "Upload",
|
||||
shiny::h3("Meta upload overview"),
|
||||
shiny::textOutput(outputId = "upload.meta.print"),
|
||||
shiny::h3("Data upload overview"),
|
||||
shiny::textOutput(outputId = "upload.data.print")
|
||||
)
|
||||
)
|
||||
nav_bar_page()
|
||||
)
|
||||
|
||||
|
14
man/nav_bar_page.Rd
Normal file
14
man/nav_bar_page.Rd
Normal file
@ -0,0 +1,14 @@
|
||||
% Generated by roxygen2: do not edit by hand
|
||||
% Please edit documentation in R/shiny_cast.R
|
||||
\name{nav_bar_page}
|
||||
\alias{nav_bar_page}
|
||||
\title{Nav_bar defining function for shiny ui}
|
||||
\usage{
|
||||
nav_bar_page()
|
||||
}
|
||||
\value{
|
||||
shiny object
|
||||
}
|
||||
\description{
|
||||
Nav_bar defining function for shiny ui
|
||||
}
|
Loading…
Reference in New Issue
Block a user