当下载按钮在 R 服务器中运行时显示“正在加载”,并在完成任务时显示隐藏消息

Yih*_*Bao 2 r shiny shinyapps

我正在尝试创建一个闪亮的应用程序,它可以从数据库下载文件,但查询时间很长,所以我想让用户知道,在按下按钮后,网络浏览器显示“正在加载给用户”,然后下载完成后,“正在加载”将被隐藏。

这是我的代码:

if (interactive()) {
  
  library(shiny)
  library(shinyWidgets)
  
  ui <- fluidPage(
    downloadBttn(
      outputId = "downloadData",
      style = "bordered",
      color = "primary"
    )
  )
  
  server <- function(input, output, session) {
    data_xi <- data.frame(s = c(1:3),r = c(4:6), x =c(19:21))
    
    observeEvent(input$downloadData, {
      showModal(modalDialog("Loading", footer=NULL))
      
      filename = function() {
        paste('data-', Sys.Date(), '.csv', sep='')
      }
      
      content = function(file) {
        write_xlsx(data_xi,file)
      }
      
      removeModal()
    })
  }
  shinyApp(ui, server)
  
}
Run Code Online (Sandbox Code Playgroud)

Sté*_*ent 5

也许是这样的:

library(shiny)

ui <- fluidPage(
  downloadBttn(
    outputId = "downloadData",
    style = "bordered",
    color = "primary"
  )
)

server <- function(input, output, session) {
  data_xi <- data.frame(s = c(1:3),r = c(4:6), x =c(19:21))
  
  output$downloadData <- downloadHandler(
    filename = function() {
      paste('data-', Sys.Date(), '.csv', sep='')
    },
    content = function(file) {
      showModal(modalDialog("Loading", footer=NULL))
      on.exit(removeModal())
      write.csv(data_xi,file)
    }
  )
}

shinyApp(ui,server)
Run Code Online (Sandbox Code Playgroud)