从服务器端调用功​​能时加载屏幕闪亮

时间:2017-06-15 14:26:37

标签: r shiny

您好我正在编写一个闪亮的应用程序,在服务器端代码中,当用户单击运行按钮时,我正在调用一个函数。我遇到的问题是该功能需要大约10-25分钟才能运行,用户可能会在此期间多次单击该按钮。函数运行结束后,我向用户显示已下载文件的输出路径并关闭App。如何防止用户多次单击按钮,如功能运行时的加载屏幕?

observeEvent(input$runprocess, {
    rundownload()
    showModal(modalDialog(title ="Output folder: XYZ path",
                      actionButton("close", "Exit"),footer = NULL,
                      size = c("m"), easyClose = FALSE))
})

observeEvent(input$close, {
  js$closeWindow()
  stopApp()
}) 

1 个答案:

答案 0 :(得分:0)

通过添加一个额外的modalDialog:

observeEvent(input$runprocess, {
    showModal(modalDialog(p("Start downloading. This might take a while"),
                         title = "download started",
              #etc etc
              ))
    rundownload()
    showModal(modalDialog(title ="Output folder: XYZ path",
                      actionButton("close", "Exit"),footer = NULL,
                      size = c("m"), easyClose = FALSE))
})

observeEvent(input$close, {
  js$closeWindow()
  stopApp()
}) 

为防止用户多次单击“运行”按钮,您可以使用shinyjs在单击后隐藏它。参见eg:Hide shiny output