2

我正在开发一个涉及 Twitter 数据获取的 R Shiny 应用程序。由于该过程可能会持续一段时间,我想表明应用程序正忙于做某事,因此用户不会认为页面被冻结。

就我而言,我以这种方式存储一些反应值:

rv <- reactiveValues()
rv$analysisStarted <- FALSE
rv$analysisAvailable <- FALSE

然后,在 UI 中,用户必须按下actionButton才能开始处理。然后,我想指出服务器正在工作的地方......

  observeEvent(input$analysisButton, {

    rv$analysisStarted <- TRUE
    rv$analysisAvailable <- FALSE

    #Processing Twitter info...

    rv$followersAnalysisStarted <- FALSE
    rv$followersAnalysisAvailable <- TRUE

  })

如果在 UI.r 中放置一个 textOutput 并以这种方式创建相应的输出方法,则它不起作用:

  output$text <- renderText({

    if (rv$analysisStarted) {
      "Server is working..."
    } else if (rv$analysisAvailable) {
     "Your report is ready :) "
    } else {
      "Enter the data to search and press analysisButton"
    }
  })

我注意到的是,当分析开始时,标签变为灰色,但在过程结束之前它不会更新文本。

此功能的正确编码应该是什么?是否可以在 observeEvent 中重绘文本输出?是否可以使用原始闪亮库或需要我也在使用的 shinyjs?

任何帮助将不胜感激。

4

1 回答 1

1

在您的情况下,检查状态的进度条会很有帮助。您的用户会欣赏此元素来指示状态。不幸的是,进度条必须在功能之前编码。这是一个技巧,您会看到一个进度条,但该对象在函数启动时停止。

这是教程:http ://shiny.rstudio.com/gallery/progress-bar-example.html

从我的角度来看,进度条是告知网络用户网站状态的最佳方式,但它并不完全完美。此外,您可以使用 CSS 更改栏的样式,以自定义和选择您自己的颜色、大小...

于 2015-09-14T14:20:15.910 回答