mirror of
https://github.com/agdamsbo/REDCapCAST.git
synced 2024-11-27 23:31:54 +01:00
restructuring
This commit is contained in:
parent
99cce26753
commit
57f9f23ece
@ -11,20 +11,13 @@ library(devtools)
|
|||||||
# if (!requireNamespace("REDCapCAST")) {
|
# if (!requireNamespace("REDCapCAST")) {
|
||||||
# install.packages("REDCapCAST")
|
# install.packages("REDCapCAST")
|
||||||
# }
|
# }
|
||||||
# library(REDCapCAST)
|
library(REDCapCAST)
|
||||||
|
|
||||||
## Load merged files for shinyapps.io hosting
|
## Load merged files for shinyapps.io hosting
|
||||||
if (file.exists(here::here("functions.R"))) {
|
if (file.exists(here::here("functions.R"))) {
|
||||||
source(here::here("functions.R"))
|
source(here::here("functions.R"))
|
||||||
}
|
}
|
||||||
|
|
||||||
ui <-
|
|
||||||
bslib::page(
|
|
||||||
theme = bslib::bs_theme(preset = "united"),
|
|
||||||
title = "REDCap database creator",
|
|
||||||
nav_bar_page()
|
|
||||||
)
|
|
||||||
|
|
||||||
server <- function(input, output, session) {
|
server <- function(input, output, session) {
|
||||||
v <- shiny::reactiveValues(
|
v <- shiny::reactiveValues(
|
||||||
file = NULL
|
file = NULL
|
||||||
@ -72,7 +65,15 @@ server <- function(input, output, session) {
|
|||||||
v$file <- "loaded"
|
v$file <- "loaded"
|
||||||
ds2dd_detailed(
|
ds2dd_detailed(
|
||||||
data = dat(),
|
data = dat(),
|
||||||
add.auto.id = input$add_id == "yes"
|
add.auto.id = input$add_id == "yes",
|
||||||
|
metadata = c(
|
||||||
|
"field_name", "form_name", "section_header", "field_type",
|
||||||
|
"field_label", "select_choices_or_calculations", "field_note",
|
||||||
|
"text_validation_type_or_show_slider_number", "text_validation_min",
|
||||||
|
"text_validation_max", "identifier", "branching_logic", "required_field",
|
||||||
|
"custom_alignment", "question_number", "matrix_group_name", "matrix_ranking",
|
||||||
|
"field_annotation"
|
||||||
|
)
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -192,4 +193,150 @@ server <- function(input, output, session) {
|
|||||||
# })
|
# })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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'",
|
||||||
|
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")
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
shiny::shinyApp(ui = ui, server = server)
|
shiny::shinyApp(ui = ui, server = server)
|
||||||
|
Loading…
Reference in New Issue
Block a user