Reporting progress (object-oriented API) — Progress
R/progress.R
Description
Reporting progress (object-oriented API)
Reporting progress (object-oriented API)
Details
Reports progress to the user during long-running operations.
This package exposes two distinct programming APIs for working with
progress. withProgress() and setProgress()
together provide a simple function-based interface, while the
Progress reference class provides an object-oriented API.
Instantiating a Progress object causes a progress panel to be
created, and it will be displayed the first time the set
method is called. Calling close will cause the progress panel
to be removed.
As of version 0.14, the progress indicators use Shiny's new notification API.
If you want to use the old styling (for example, you may have used customized
CSS), you can use style="old" each time you call
Progress$new(). If you don't want to set the style each time
Progress$new is called, you can instead call
shinyOptions(progress.style="old") just once, inside the server
function.
See also
Methods
Method new()
Creates a new progress panel (but does not display it).
Usage
Progress$new(
session = getDefaultReactiveDomain(),
min = 0,
max = 1,
style = getShinyOption("progress.style", default = "notification")
)Arguments
sessionThe Shiny session object, as provided by
shinyServerto the server function.minThe value that represents the starting point of the progress bar. Must be less than
max.maxThe value that represents the end of the progress bar. Must be greater than
min.styleProgress display style. If
"notification"(the default), the progress indicator will show using Shiny's notification API. If"old", use the same HTML and CSS used in Shiny 0.13.2 and below (this is for backward-compatibility).
Method set()
Updates the progress panel. When called the first time, the progress panel is displayed.
Arguments
valueSingle-element numeric vector; the value at which to set the progress bar, relative to
minandmax.NULLhides the progress bar, if it is currently visible.messageA single-element character vector; the message to be displayed to the user, or
NULLto hide the current message (if any).detailA single-element character vector; the detail message to be displayed to the user, or
NULLto hide the current detail message (if any). The detail message will be shown with a de-emphasized appearance relative tomessage.
Method inc()
Like set, this updates the progress panel. The difference
is that inc increases the progress bar by amount, instead of
setting it to a specific value.
Arguments
amountFor the
inc()method, a numeric value to increment the progress bar.messageA single-element character vector; the message to be displayed to the user, or
NULLto hide the current message (if any).detailA single-element character vector; the detail message to be displayed to the user, or
NULLto hide the current detail message (if any). The detail message will be shown with a de-emphasized appearance relative tomessage.
Method close()
Removes the progress panel. Future calls to set and
close will be ignored.
Examples
## Only run examples in interactive R sessions
if (interactive()) {
ui <- fluidPage(
plotOutput("plot")
)
server <- function(input, output, session) {
output$plot <- renderPlot({
progress <- Progress$new(session, min=1, max=15)
on.exit(progress$close())
progress$set(message = 'Calculation in progress',
detail = 'This may take a while...')
for (i in 1:15) {
progress$set(value = i)
Sys.sleep(0.5)
}
plot(cars)
})
}
shinyApp(ui, server)
}