aboutsummaryrefslogtreecommitdiff
path: root/R/web.R
diff options
context:
space:
mode:
authorNaeem Model <me@nmode.ca>2025-01-06 23:55:43 +0000
committerNaeem Model <me@nmode.ca>2025-01-06 23:55:43 +0000
commite920b3e514e717fc05ed524267d3b53e272fec51 (patch)
tree353cfb36aca946d69da6d6dcacc0cb66177050ef /R/web.R
parent2d34b71c7a8da7fd0fac59b934145286b2be7b1f (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.R57
1 files changed, 57 insertions, 0 deletions
diff --git a/R/web.R b/R/web.R
new file mode 100644
index 0000000..ecfd501
--- /dev/null
+++ b/R/web.R
@@ -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"))
+}