From f787621f1ba7077556ef42d2aef2425e859c10a3 Mon Sep 17 00:00:00 2001 From: Andreas Gammelgaard Damsbo Date: Thu, 14 Mar 2024 09:26:22 +0100 Subject: [PATCH] updated shiny app --- R/shiny_cast.R | 21 +- .../shinyapps.io/agdamsbo/redcapcast.dcf | 10 + .../cognitiveindex/shiny_cast.dcf | 10 + app/ui.R | 200 +++++++++++------- app/www/logo.png | Bin 0 -> 8247 bytes man/deploy_shiny.Rd | 18 +- 6 files changed, 171 insertions(+), 88 deletions(-) create mode 100644 app/rsconnect/shinyapps.io/agdamsbo/redcapcast.dcf create mode 100644 app/rsconnect/shinyapps.io/cognitiveindex/shiny_cast.dcf create mode 100644 app/www/logo.png diff --git a/R/shiny_cast.R b/R/shiny_cast.R index bc25fdd..5f66c93 100644 --- a/R/shiny_cast.R +++ b/R/shiny_cast.R @@ -34,23 +34,32 @@ shiny_cast <- function() { ) } -#' Deploy the Shiny app with rsconnect +#' Deploy the Shiny app with rsconnect to shinyapps.io +#' +#' @description +#' This is really just a simple wrapper #' #' @param path app folder path #' @param name.app name of deployed app +#' @param name.token stored name of token +#' @param name.secret stored name of secret #' #' @return deploy #' @export #' #' @examples -#' # deploy_shiny +#' # deploy_shiny() #' -deploy_shiny <- function(path = here::here("app/"), name.app = "shiny_cast") { +deploy_shiny <- function(path = here::here("app/"), + account.name, + name.app = "shiny_cast", + name.token, + name.secret) { # Connecting rsconnect::setAccountInfo( - name = "cognitiveindex", - token = keyring::key_get(service = "rsconnect_cognitiveindex_token"), - secret = keyring::key_get(service = "rsconnect_cognitiveindex_secret") + name = account.name, + token = keyring::key_get(service = name.token), + secret = keyring::key_get(service = name.secret) ) # Deploying diff --git a/app/rsconnect/shinyapps.io/agdamsbo/redcapcast.dcf b/app/rsconnect/shinyapps.io/agdamsbo/redcapcast.dcf new file mode 100644 index 0000000..446a0ac --- /dev/null +++ b/app/rsconnect/shinyapps.io/agdamsbo/redcapcast.dcf @@ -0,0 +1,10 @@ +name: redcapcast +title: +username: agdamsbo +account: agdamsbo +server: shinyapps.io +hostUrl: https://api.shinyapps.io/v1 +appId: 11351429 +bundleId: 8311272 +url: https://agdamsbo.shinyapps.io/redcapcast/ +version: 1 diff --git a/app/rsconnect/shinyapps.io/cognitiveindex/shiny_cast.dcf b/app/rsconnect/shinyapps.io/cognitiveindex/shiny_cast.dcf new file mode 100644 index 0000000..4fcbaf3 --- /dev/null +++ b/app/rsconnect/shinyapps.io/cognitiveindex/shiny_cast.dcf @@ -0,0 +1,10 @@ +name: shiny_cast +title: +username: cognitiveindex +account: cognitiveindex +server: shinyapps.io +hostUrl: https://api.shinyapps.io/v1 +appId: 11351378 +bundleId: 8306502 +url: https://cognitiveindex.shinyapps.io/shiny_cast/ +version: 1 diff --git a/app/ui.R b/app/ui.R index 90d67f5..c620ddc 100644 --- a/app/ui.R +++ b/app/ui.R @@ -1,89 +1,133 @@ -ui <- shiny::fluidPage( +ui <- shiny::shinyUI( + shiny::fluidPage( - ## ----------------------------------------------------------------------------- - ## Application title - ## ----------------------------------------------------------------------------- - shiny::titlePanel("Simple REDCap data base creation and data upload from data set file via API", - windowTitle = "REDCap databse creator" - ), - shiny::h5("Please note, that this tool serves as a demonstration of some of the functionality - of the REDCapCAST package. No responsibility for data loss or any other - problems will be taken."), + ## ----------------------------------------------------------------------------- + ## Application title + ## ----------------------------------------------------------------------------- - ## ----------------------------------------------------------------------------- - ## Side panel - ## ----------------------------------------------------------------------------- - shiny::sidebarPanel( - shiny::h4("REDCap database and dataset"), - shiny::fileInput("ds", "Choose data file", - multiple = FALSE, - accept = c( - ".csv", - ".xls", - ".xlsx", - ".dta" - ) + # customHeaderPanel(title = "REDCapCAST: data base creation and data upload from data set file", + # windowTitle = "REDCap database creator" + # ), + + shiny::titlePanel(title = shiny::div(shiny::a(shiny::img(src="logo.png"),href="https://agdamsbo.github.io/REDCapCAST"), + "Easy REDCap database creation"), + windowTitle = "REDCap database creator" ), - shiny::h6("Below you can download the dataset formatted for upload and the - corresponding data dictionary for a new data base."), - # Button - shiny::downloadButton("downloadData", "Download data"), - - # Button - shiny::downloadButton("downloadMeta", "Download dictionary"), + shiny::h4("This tool includes to convenient functions:", + shiny::br(), + "1) creating a REDCap data dictionary based on a spreadsheet (.csv/.xls(x)/.dta) and", + shiny::br(), + "2) creating said database on a given REDCap server and uploading the dataset via API access."), - # Horizontal line ---- - shiny::tags$hr(), - shiny::h4("REDCap upload"), - shiny::textInput( - inputId = "uri", - label = "URI", - value = "https://redcap.your.institution/api/" - ), - shiny::textInput( - inputId = "api", - label = "API key", - value = "" - ), - shiny::actionButton( - inputId = "upload.meta", - label = "Upload dictionary", icon = shiny::icon("book-bookmark") - ), - shiny::h6("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") - ), + ## ----------------------------------------------------------------------------- + ## Side panel + ## ----------------------------------------------------------------------------- - # Horizontal line ---- - shiny::tags$hr() - ), - shiny::mainPanel( - shiny::tabsetPanel( - - ## ----------------------------------------------------------------------------- - ## Summary tab - ## ----------------------------------------------------------------------------- - shiny::tabPanel( - "Summary", - shiny::h3("Data overview (first 20)"), - shiny::htmlOutput("data.tbl", container = shiny::span), - shiny::h3("Dictionary overview"), - shiny::htmlOutput("meta.tbl", container = shiny::span) + shiny::sidebarPanel( + shiny::h4("1) REDCap datadictionary and compatible dataset"), + shiny::fileInput("ds", "Choose data file", + multiple = FALSE, + accept = c( + ".csv", + ".xls", + ".xlsx", + ".dta" + ) ), - ## ----------------------------------------------------------------------------- - ## Upload tab - ## ----------------------------------------------------------------------------- - shiny::tabPanel( - "Upload", - shiny::h3("Meta upload overview"), - shiny::htmlOutput("upload.meta.print", container = shiny::span), - shiny::h3("Data upload overview"), - shiny::htmlOutput("upload.data.print", container = shiny::span) + shiny::h6("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("downloadData", "Download data"), + + # Button + shiny::downloadButton("downloadMeta", "Download datadictionary"), + + + # Horizontal line ---- + shiny::tags$hr(), + shiny::h4("2) REDCap upload"), + shiny::h6("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::h6("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::h6("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") + ), + + # Horizontal line ---- + shiny::tags$hr() + ), + shiny::mainPanel( + shiny::tabsetPanel( + + ## ----------------------------------------------------------------------------- + ## Summary tab + ## ----------------------------------------------------------------------------- + shiny::tabPanel( + "Summary", + shiny::h3("Data overview (first 20)"), + shiny::htmlOutput("data.tbl", container = shiny::span), + shiny::h3("Dictionary overview"), + shiny::htmlOutput("meta.tbl", container = shiny::span) + ), + ## ----------------------------------------------------------------------------- + ## Upload tab + ## ----------------------------------------------------------------------------- + shiny::tabPanel( + "Upload", + shiny::h3("Meta upload overview"), + shiny::htmlOutput("upload.meta.print", container = shiny::span), + shiny::h3("Data upload overview"), + shiny::htmlOutput("upload.data.print", container = shiny::span) + ) ) - ) + ), + + + # close sidebarLayout + + br(), + br(), + br(), + br(), + hr(), + shiny::tags$footer(shiny::strong("Disclaimer: "), + "This tool is aimed at demonstrating use of REDCapCAST. No responsibility for data loss or any other problems will be taken. Please contact me for support.", + shiny::br(), + shiny::a("License: GPL-3+",href="https://agdamsbo.github.io/REDCapCAST/LICENSE.html"), + "|", + shiny::a("agdamsbo/REDCapCAST",href="https://agdamsbo.github.io/REDCapCAST"), + "|", + shiny::a("Source",href="https://github.com/agdamsbo/REDCapCAST"), + "|", + shiny::a("Contact",href="https://andreas.gdamsbo.dk"), + align = "center", + style = " + position:fixed; + bottom:40px; + width:100%; + height:20px; + color: black; + padding: 0px; + background-color: White; + z-index: 100; + ") ) ) diff --git a/app/www/logo.png b/app/www/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ee070ac1996b895f122ff6097a797ae5747e89 GIT binary patch literal 8247 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 Qbp$|JUPG>4#v<&00CF_IM*si- literal 0 HcmV?d00001 diff --git a/man/deploy_shiny.Rd b/man/deploy_shiny.Rd index 5104cc3..d92d7a9 100644 --- a/man/deploy_shiny.Rd +++ b/man/deploy_shiny.Rd @@ -2,22 +2,32 @@ % Please edit documentation in R/shiny_cast.R \name{deploy_shiny} \alias{deploy_shiny} -\title{Deploy the Shiny app with rsconnect} +\title{Deploy the Shiny app with rsconnect to shinyapps.io} \usage{ -deploy_shiny(path = here::here("app/"), name.app = "shiny_cast") +deploy_shiny( + path = here::here("app/"), + account.name, + name.app = "shiny_cast", + name.token, + name.secret +) } \arguments{ \item{path}{app folder path} \item{name.app}{name of deployed app} + +\item{name.token}{stored name of token} + +\item{name.secret}{stored name of secret} } \value{ deploy } \description{ -Deploy the Shiny app with rsconnect +This is really just a simple wrapper } \examples{ -# deploy_shiny +# deploy_shiny() }