modal-progress {shinybusy} | R Documentation |
Show a modal with a progress bar
Description
Make a pop-up window appear from the server with a spinner during long computation, remove it when finished.
Usage
show_modal_progress_line(
value = 0,
text = "auto",
color = "#112446",
stroke_width = 4,
easing = "linear",
duration = 1000,
trail_color = "#eee",
trail_width = 1,
height = "15px",
session = shiny::getDefaultReactiveDomain()
)
show_modal_progress_circle(
value = 0,
text = "auto",
color = "#112446",
stroke_width = 4,
easing = "linear",
duration = 1000,
trail_color = "#eee",
trail_width = 1,
height = "200px",
session = shiny::getDefaultReactiveDomain()
)
remove_modal_progress(session = getDefaultReactiveDomain())
update_modal_progress(
value,
text = NULL,
session = shiny::getDefaultReactiveDomain()
)
Arguments
value |
Initial value or new value to set. |
text |
Text to display. |
color |
Main color. |
stroke_width |
Main width. |
easing |
CSS animation to use, ex.: |
duration |
Animation duration (in milliseconds). |
trail_color |
Color of shape behind the main bar. |
trail_width |
Width of shape behind the main bar. |
height |
Container height. |
session |
The |
Examples
if (interactive()) {
library(shiny)
library(shinybusy)
ui <- fluidPage(
tags$h1("Modal with progress bar"),
actionButton("sleep1", "Launch a long calculation"),
actionButton("sleep2", "And another one (different line options)"),
tags$br(),
actionButton("sleep3", "With a circle progress bar"),
actionButton("sleep4", "With different circle options)")
)
server <- function(input, output, session) {
observeEvent(input$sleep1, {
show_modal_progress_line()
for (i in 1:100) {
update_modal_progress(
value = i / 100
)
Sys.sleep(0.1)
}
remove_modal_progress()
})
observeEvent(input$sleep2, {
show_modal_progress_line(
color = "#DF0101",
duration = 900,
easing = "easeOut",
text = "Starting computation"
)
Sys.sleep(0.1)
for (i in 1:100) {
update_modal_progress(
value = i / 100,
text = paste("Process", trunc(i/10), sprintf("(%02d%%)", i))
)
Sys.sleep(0.15)
}
remove_modal_progress()
})
observeEvent(input$sleep3, {
show_modal_progress_circle()
for (i in 1:100) {
update_modal_progress(
value = i / 100
)
Sys.sleep(0.1)
}
remove_modal_progress()
})
observeEvent(input$sleep4, {
show_modal_progress_circle(
color = "#DF0101",
duration = 900,
easing = "easeOut",
text = "Starting computation",
height = "300px"
)
Sys.sleep(0.1)
for (i in 1:100) {
update_modal_progress(
value = i / 100,
text = paste("Process", trunc(i/10), sprintf("(%02d%%)", i))
)
Sys.sleep(0.15)
}
remove_modal_progress()
})
}
shinyApp(ui, server)
}
[Package shinybusy version 0.3.3 Index]