Loading screens for Shiny
Website | Demo | Get Started | Cheat Sheet
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 |
|---|---|---|---|
| Progress Bar | :heavy_check_mark: | :heavy_check_mark: | :heavy_check_mark: |
| Full Screen | :heavy_check_mark: | :heavy_check_mark: | :heavy_multiplication_x: |
| Works with waiter | :heavy_check_mark: | :heavy_multiplication_x: | :heavy_check_mark: |
| Spinner | :heavy_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: |
| Updatable | :heavy_check_mark: | :heavy_multiplication_x: | :heavy_multiplication_x: |
| Notifications | :heavy_multiplication_x: | :heavy_check_mark: | :heavy_multiplication_x: |
Examples
Below are simple examples of applications that use the package, consult the website for more.
Waiter
To use the waiter:
- Include
use_waiterin your UI. - Trigger
show_waiterto show the waiting screen. - Eventually trigger
hide_waiterto hide the loading screen.
library(shiny)
library(waiter)
ui <- fluidPage(
use_waiter(), # include dependencies
waiter_show_on_load(),
actionButton("show", "Show loading for 3 seconds")
)
server <- function(input, output, session){
observeEvent(input$show, {
waiter_show( # show the waiter
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:
- Include
use_waitressin your UI. - Initialise a waitress from the
Waitressobject with thenewmethod. - You must then call the
start. - On the waitress object use the
increasemethod to increase the progress bar. - Use the
hidemethod when done.
library(shiny)
library(waiter)
ui <- fluidPage(
use_waitress(),
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 from CRAN.
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.