Я хочу показать спиннер cssloader, пока выполняется некоторая обработка.Cssloader должен отображаться только после нажатия кнопки actionButton, которая запускает обработку данных (этот шаг требует некоторого времени, смоделированного функцией sys.Sleep()
в приведенном ниже примере).Кроме того, я хочу, чтобы он отображался каждый раз, когда действие вызывается actionButton, а не только в первый раз.
Вот пример того, что я пытаюсь:
library(shiny)
library(shinycssloaders)
ui <- fluidPage(
titlePanel("CSS loader test"),
sidebarLayout(
sidebarPanel(
selectInput("imageOptions", "Choose an image:", choices = list(option1="RStudio-Logo-Blue-Gradient.png", option2="RStudio-Logo-All-Gray.png")),
actionButton("getImage", "Show image:")
),
mainPanel(
withSpinner(uiOutput("logo"))
)
)
)
server <- function(input, output) {
url<-reactive(
paste0("https://www.rstudio.com/wp-content/uploads/2014/07/", input$imageOptions)
)
observeEvent(input$getImage,{
output$logo<-renderText({
URL<-isolate(url())
print(URL)
Sys.sleep(2)
c('<center><img src="', URL, '"width="50%" height="50%" align="middle"></center>')
})
})
}
# Run the application
shinyApp(ui = ui, server = server)