有没有办法防止下载页面在R Shiny中打开?

斯坦博克

在闪亮的应用程序中单击下载按钮后,将打开一个新页面来初始化下载。但是,我的下载处理程序需要一些时间来生成可下载文件,该文件显示在主闪亮页面上的进度栏中。有没有一种方法可以使用户停留在主页上或阻止下载页面打开或将下载页面推迟到生成文件为止?

非常感谢

马库斯

斯坦博克

Vincent的解决方案使用了两个按钮,一个是用于计算的操作按钮,另一个是用于下载的下载按钮。该解决方案的另一个好处是进度条也包含在ShiningIncubator软件包中。

如果有人想做同样的事情,请对我的代码进行解释:

ui.R具有一个操作按钮和一个动态下载按钮:

actionButton("makePlots", "Calculate Results"),
uiOutput("download_button")

进度条的进度初始化:

  mainPanel(
    progressInit(),
      uiOutput("mytabs")) # dynamic rendering of the tabs

server.R稍微复杂一些。因此,只有在有要下载的内容时才显示下载按钮,我将动态uiOutput与以下代码一起使用:

    output$download_button <- renderUI({
          if(download){
              downloadButton("downloadPlots", "Download Results")
          }
     })

下载按钮仅在时显示download==TRUE在server.R的开头,变量被初始化:download<-FALSE

每次单击时,随着动作按钮增加1,我包括了一个计数器(初始值为0),该值在每次“使用”动作按钮后增加。原因是第一个if语句。

makePlots<-reactive({

    if(input$makePlots>counter){ # tests whether action button has been clicked

       dir.create("new_directory_for_output")

       withProgress(session, min=1, max=15, expr={ # setup progress bar

       for(i in 1:15){

         png(paste0("new_directory_for_output/plot",i,".png"))
         plot(i)
         dev.off()

         setProgress(message = 'Calculation in progress',
              detail = 'This may take a while...',
              value=i)

       } # end for

       }) # end progress bar

       counter<<-counter+1 # needs the <<- otherwise the value of counter
                           # is only changed within the function

       download<<-TRUE     # something to download     

     } # end if

}) # end function

在此阶段,函数makePlots()没有输出,并且在任何地方都没有调用,因此它什么也不做。因此,我将makePlots()放在每个选项卡的开头,以便无论用户位于哪个选项卡上,一旦单击了操作按钮,便会制作并保存图。

最后的难题是下载处理程序:

output$downloadPlots <- downloadHandler(

    filename = function() { my_filename.zip },
    content = function(file){

      fname <- paste(file,"zip",sep=".") 
      zip(fname,new_directory_for_output) # zip all files in the directory
      file.rename(fname,file)

      unlink(new_directory_for_output,recursive = TRUE) # delete temp directory
      download<<-FALSE # hide download button 
    }

    ) # end download handler

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

有没有办法防止下载页面在R Shiny中打开?

来自分类Dev

有没有办法从statsmodels中的R下载一些数据集?

来自分类Dev

有没有办法在R中与seq相乘?

来自分类Dev

有没有办法解决R中的方程?

来自分类Dev

有没有办法在R Shiny中显示.gif文件?

来自分类Dev

在使用Shiny的R中,有没有办法使用checkboxGroupInput的先前状态?

来自分类Dev

有没有办法防止git在Windows上打开密码提示框?

来自分类Dev

有没有办法选择.torrent中要下载的单个文件?

来自分类Dev

有没有办法防止在STL unordered_map中插入或擦除?

来自分类Dev

有没有办法防止数字在JavaScript中为负数?

来自分类Dev

有没有办法防止更改WPF DataGrid中的所选行?

来自分类Dev

有没有办法防止列表中项目的重复?

来自分类Dev

有没有办法防止在Angular 2 RC5中删除DOM?

来自分类Dev

有没有办法防止 Mac OS X 中的应用程序窃取焦点?

来自分类Dev

有没有办法防止在 pdf 或 html 文件中打印警告?

来自分类Dev

有没有办法防止表单在#c 中多次显示?

来自分类Dev

有没有办法在swagger-ui页面中更改控制器的名称?

来自分类Dev

有没有办法从Nginx中的代理转发页面?

来自分类Dev

有没有办法(永久)链接Azure DevOps Wiki页面中的源代码片段?

来自分类Dev

有没有办法将xamarin登录页面连接到Webview中的我的网站?

来自分类Dev

有没有办法在swagger-ui页面中更改控制器的名称?

来自分类Dev

有没有办法从Nginx中的代理转发页面?

来自分类Dev

有没有办法在 pyppeteer 中滚动到页面末尾

来自分类Dev

有没有办法打开DICOM文件?

来自分类Dev

有没有办法打开任何活动

来自分类Dev

有没有办法在 Opera 上打开 Webex?

来自分类Dev

在R Shiny中,有没有办法冻结交互式绘图上的x轴?

来自分类Dev

有没有办法在jtable中打开用derby(在netbeans中是derby)制成的表?

来自分类Dev

有没有办法像在SQL中那样在R中做ROLLUP或CUBE?

Related 相关文章

  1. 1

    有没有办法防止下载页面在R Shiny中打开?

  2. 2

    有没有办法从statsmodels中的R下载一些数据集?

  3. 3

    有没有办法在R中与seq相乘?

  4. 4

    有没有办法解决R中的方程?

  5. 5

    有没有办法在R Shiny中显示.gif文件?

  6. 6

    在使用Shiny的R中,有没有办法使用checkboxGroupInput的先前状态?

  7. 7

    有没有办法防止git在Windows上打开密码提示框?

  8. 8

    有没有办法选择.torrent中要下载的单个文件?

  9. 9

    有没有办法防止在STL unordered_map中插入或擦除?

  10. 10

    有没有办法防止数字在JavaScript中为负数?

  11. 11

    有没有办法防止更改WPF DataGrid中的所选行?

  12. 12

    有没有办法防止列表中项目的重复?

  13. 13

    有没有办法防止在Angular 2 RC5中删除DOM?

  14. 14

    有没有办法防止 Mac OS X 中的应用程序窃取焦点?

  15. 15

    有没有办法防止在 pdf 或 html 文件中打印警告?

  16. 16

    有没有办法防止表单在#c 中多次显示?

  17. 17

    有没有办法在swagger-ui页面中更改控制器的名称?

  18. 18

    有没有办法从Nginx中的代理转发页面?

  19. 19

    有没有办法(永久)链接Azure DevOps Wiki页面中的源代码片段?

  20. 20

    有没有办法将xamarin登录页面连接到Webview中的我的网站?

  21. 21

    有没有办法在swagger-ui页面中更改控制器的名称?

  22. 22

    有没有办法从Nginx中的代理转发页面?

  23. 23

    有没有办法在 pyppeteer 中滚动到页面末尾

  24. 24

    有没有办法打开DICOM文件?

  25. 25

    有没有办法打开任何活动

  26. 26

    有没有办法在 Opera 上打开 Webex?

  27. 27

    在R Shiny中,有没有办法冻结交互式绘图上的x轴?

  28. 28

    有没有办法在jtable中打开用derby(在netbeans中是derby)制成的表?

  29. 29

    有没有办法像在SQL中那样在R中做ROLLUP或CUBE?

热门标签

归档