REDCapCAST/inst/shiny-examples/casting/ui.R

145 lines
5.0 KiB
R
Raw Normal View History

ui <-
bslib::page(
theme = bslib::bs_theme(preset = "united"),
title = "REDCap database creator",
bslib::page_navbar(
title = "Easy REDCap database creation",
2024-11-18 08:17:55 +01:00
sidebar = bslib::sidebar(
width = 300,
shiny::h5("Metadata casting"),
shiny::fileInput(
inputId = "ds",
2024-11-18 08:17:55 +01:00
label = "Upload spreadsheet",
multiple = FALSE,
accept = c(
".csv",
".xls",
".xlsx",
".dta",
".rds",
".ods"
)
),
2024-11-18 16:50:03 +01:00
# shiny::actionButton(
# inputId = "load_data",
# label = "Load data",
# icon = shiny::icon("circle-down")
# ),
2024-11-18 16:26:10 +01:00
shiny::helpText("Have a look at the preview panels to validate the data dictionary and imported data."),
2024-11-18 08:17:55 +01:00
# For some odd reason this only unfolds when the preview panel is shown..
2024-11-18 16:50:03 +01:00
# This has been solved by adding an arbitrary button to load data - which was abandoned again
2024-11-18 08:17:55 +01:00
shiny::conditionalPanel(
2024-11-18 16:50:03 +01:00
condition = "output.uploaded=='yes'",
2024-11-20 12:10:33 +01:00
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")
),
2024-11-18 16:50:03 +01:00
# condition = "input.load_data",
2024-11-18 16:26:10 +01:00
# 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."),
2024-11-18 08:17:55 +01:00
# Button
2024-11-18 16:26:10 +01:00
shiny::downloadButton(outputId = "downloadData", label = "Download renamed data"),
2024-11-18 08:17:55 +01:00
# Button
2024-11-18 16:26:10 +01:00
shiny::downloadButton(outputId = "downloadMeta", label = "Download data dictionary"),
2024-11-18 08:17:55 +01:00
# Button
2024-11-18 16:26:10 +01:00
shiny::downloadButton(outputId = "downloadInstrument", label = "Download as instrument"),
2024-11-18 08:17:55 +01:00
# 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."),
2024-11-18 08:17:55 +01:00
shiny::actionButton(
inputId = "upload.data",
label = "Upload data", icon = shiny::icon("upload")
)
)
),
shiny::br(),
shiny::br(),
shiny::br(),
shiny::p(
2024-11-18 08:17:55 +01:00
"License: ", shiny::a("GPL-3+", href = "https://agdamsbo.github.io/REDCapCAST/LICENSE.html")
),
shiny::p(
2024-11-18 08:17:55 +01:00
shiny::a("Package documentation", href = "https://agdamsbo.github.io/REDCapCAST")
)
),
bslib::nav_panel(
title = "Intro",
shiny::markdown(readLines("www/SHINYCAST.md")),
shiny::br()
),
2024-11-18 08:17:55 +01:00
# bslib::nav_spacer(),
bslib::nav_panel(
title = "Data preview",
2024-11-18 08:17:55 +01:00
gt::gt_output(outputId = "data.tbl")
# shiny::htmlOutput(outputId = "data.tbl", container = shiny::span)
),
bslib::nav_panel(
title = "Dictionary overview",
2024-11-18 08:17:55 +01:00
gt::gt_output(outputId = "meta.tbl")
# shiny::htmlOutput(outputId = "meta.tbl", container = shiny::span)
),
bslib::nav_panel(
title = "Upload",
shiny::h3("Meta upload overview"),
2024-11-18 08:17:55 +01:00
shiny::textOutput(outputId = "upload.meta.print"),
shiny::h3("Data upload overview"),
2024-11-18 08:17:55 +01:00
shiny::textOutput(outputId = "upload.data.print")
)
)
)
2024-11-18 16:26:10 +01:00