Create a progress bar to provide feedback on calculation.
Usage
progressBar(
id,
value,
total = NULL,
display_pct = FALSE,
size = NULL,
status = NULL,
striped = FALSE,
title = NULL,
range_value = NULL,
commas = TRUE,
format_display = function(value) {
prettyNum(value, big.mark = ",", scientific =
FALSE)
},
unit_mark = "%"
)
updateProgressBar(
session = getDefaultReactiveDomain(),
id,
value,
total = NULL,
title = NULL,
status = NULL,
range_value = NULL,
commas = TRUE,
format_display = function(value) {
prettyNum(value, big.mark = ",", scientific =
FALSE)
},
unit_mark = "%"
)
Arguments
- id
An id used to update the progress bar. If in a Shiny module, it use same logic than inputs : use namespace in UI, not in server.
- value
Value of the progress bar between 0 and 100, if >100 you must provide total.
- total
Used to calculate percentage if value > 100, force an indicator to appear on top right of the progress bar.
- display_pct
logical, display percentage on the progress bar.
- size
Size,
NULL
by default or a value in 'xxs', 'xs', 'sm', only work with packageshinydashboard
.- status
Color, must be a valid Bootstrap status : primary, info, success, warning, danger.
- striped
logical, add a striped effect.
- title
character, optional title.
- range_value
Default is to display percentage (
[0, 100]
), but you can specify a custom range, e.g.[-50, 50]
.- commas
Deprecated, use
format_display
.- format_display
Function to format the value displayed.
- unit_mark
Unit for value displayed on the progress bar, default to
%
.- session
The 'session' object passed to function given to shinyServer.
See also
progressSweetAlert for progress bar in a sweet alert
Examples
if (interactive()) {
library("shiny")
library("shinyWidgets")
ui <- fluidPage(
column(
width = 7,
tags$b("Default"), br(),
progressBar(id = "pb1", value = 50),
sliderInput(
inputId = "up1",
label = "Update",
min = 0,
max = 100,
value = 50
),
br(),
tags$b("Other options"), br(),
progressBar(
id = "pb2",
value = 0,
total = 100,
title = "",
display_pct = TRUE
),
actionButton(
inputId = "go",
label = "Launch calculation"
)
)
)
server <- function(input, output, session) {
observeEvent(input$up1, {
updateProgressBar(
session = session,
id = "pb1",
value = input$up1
)
})
observeEvent(input$go, {
for (i in 1:100) {
updateProgressBar(
session = session,
id = "pb2",
value = i, total = 100,
title = paste("Process", trunc(i/10))
)
Sys.sleep(0.1)
}
})
}
shinyApp(ui = ui, server = server)
}