GitHub - JohnCoene/waiter: 🕰️ Loading screens for Shiny (original) (raw)

The waiter lets you programmatically show and hide partial or full page loading screens with spinners or loading bars to keep your users patiently waiting as you load or compute fancy things.

Feature Waiter Waitress Hostess Attendant
Progress Bar ✔️ ✔️ ✔️ ✔️
Full Screen ✔️ ✔️ ✖️ ✖️
Works with waiter ✔️ ✖️ ✔️ ✔️
Spinner ✔️ ✖️ ✖️ ✖️
Updatable ✔️ ✖️ ✖️ ✔️
Notifications ✖️ ✔️ ✖️ ✖️

Examples

Below are simple examples of applications that use the package, consult the website for more.

Waiter

To use the waiter:

  1. Include useWaiter in your UI.
  2. Trigger waiter_show to show the waiting screen.
  3. Eventually trigger waiter_hide to hide the loading screen.

library(shiny) library(waiter)

ui <- fluidPage( useWaiter(), # include dependencies actionButton("show", "Show loading for 3 seconds") )

server <- function(input, output, session){

observeEvent(input$show, {

waiter_show( # show the waiter
  html = spin_fading_circles() # use a spinner
)

Sys.sleep(3) # do something that takes time

waiter_hide() # hide the waiter

})

}

shinyApp(ui, server)

The waiter includes more options to customise the spinner, the background, show the waiter on load, etc.

Waitress

To use the waitress:

  1. Include use_waitress in your UI.
  2. Initialise a waitress from the Waitress object with the newmethod.
  3. You must then call the start.
  4. On the waitress object use the increase method to increase the progress bar.
  5. Use the hide method when done.

library(shiny) library(waiter)

ui <- fluidPage( useWaitress(), p("App content") )

server <- function(input, output){

call the waitress

waitress <- Waitress$ new(theme = "overlay-percent")$ start() # start

for(i in 1:10){ waitress$inc(10) # increase by 10% Sys.sleep(.3) }

hide when it's done

waitress$close()

}

shinyApp(ui, server)

There are more options to the waitress, you can have it overlay any element (such as the navbar), automagically increment it, etc.

Get it

You can install waiter fromCRAN.

install.packages("waiter")

Or the development version from Github with:

install.packages("remotes") remotes::install_github("JohnCoene/waiter")

Please note that the ‘waiter’ project is released with a Contributor Code of Conduct. By contributing to this project, you agree to abide by its terms.