diff options
author | Naeem Model <me@nmode.ca> | 2025-01-06 23:55:43 +0000 |
---|---|---|
committer | Naeem Model <me@nmode.ca> | 2025-01-06 23:55:43 +0000 |
commit | e920b3e514e717fc05ed524267d3b53e272fec51 (patch) | |
tree | 353cfb36aca946d69da6d6dcacc0cb66177050ef /R/web.R | |
parent | 2d34b71c7a8da7fd0fac59b934145286b2be7b1f (diff) |
Update web app entry point
- Rename 'app' -> 'web'
- Return shiny app object in entry point function
Diffstat (limited to 'R/web.R')
-rw-r--r-- | R/web.R | 57 |
1 files changed, 57 insertions, 0 deletions
@@ -0,0 +1,57 @@ +#' Launch the Rnaught Web Application +#' +#' This is the entry point of the Rnaught web application, which creates and +#' returns a Shiny app object. When invoked directly, the web application is +#' launched. +#' +#' The following dependencies are required to run the application: +#' * [shiny](https://shiny.posit.co) +#' * [bslib](https://rstudio.github.io/bslib) +#' * [DT](https://rstudio.github.io/DT) +#' * [plotly](https://plotly-r.com) +#' +#' If any of the above packages are missing during launch, a prompt will appear +#' to install them. +#' +#' To configure settings such as the port, host or default browser, set Shiny's +#' global options (see [shiny::runApp()]). +#' +#' @return A Shiny app object for the Rnaught web application. +#' +#' @importFrom utils install.packages +#' +#' @export +web <- function() { + missing_pkgs <- c() + # Check for any missing, required packages. + if (!requireNamespace("shiny", quietly = TRUE)) { + missing_pkgs <- c(missing_pkgs, "shiny") + } + if (!requireNamespace("bslib", quietly = TRUE)) { + missing_pkgs <- c(missing_pkgs, "bslib") + } + if (!requireNamespace("DT", quietly = TRUE)) { + missing_pkgs <- c(missing_pkgs, "DT") + } + if (!requireNamespace("plotly", quietly = TRUE)) { + missing_pkgs <- c(missing_pkgs, "plotly") + } + + # If any of the required packages are missing, + # prompt the user to install them. + if (length(missing_pkgs) > 0) { + cat("The following packages must be installed to run the", + "Rnaught web application:\n" + ) + writeLines(missing_pkgs) + answer <- readline("Begin installation? [Y/n] ") + + if (answer == "Y" || answer == "y") { + install.packages(missing_pkgs) + } else { + stop("Aborting due to missing, required packages.", call. = FALSE) + } + } + + shiny::shinyAppDir(appDir = system.file("web", package = "Rnaught")) +} |