Shiny:ProgressBar用于将数据从数据库加载到数据表(DT)

Mal*_*l_a 2 r progress-bar shiny dt

我还没有找到关于Shiny中ProgressBar的问题的解决方案,用于从数据库加载数据.我的Shiny App连接到数据库,用户直接从那里获取数据(因为我的SQL查询是被动的,数据量不同).有时数据很大,加载需要一些时间.用户不知道是否有什么事情发生或应用程序"卡住".我在我的应用程序(在output$tabelle <- DT::renderDataTable({...中)实现了最简单的流程指标,但似乎还不够:

progress <- shiny::Progress$new()

        on.exit(progress$close())

        progress$set(message = "Processing", value = 0)
Run Code Online (Sandbox Code Playgroud)

用户仍然有点困惑.

我想像这样smthg(在R中显示状态消息)使用?tcltk::tkProgressBar:

在此输入图像描述

pb <- tkProgressBar("test progress bar", "Some information in %",
        0, 100, 50)
Sys.sleep(0.5)
u <- c(0, sort(runif(20, 0 ,100)), 100)
for(i in u) {
    Sys.sleep(0.1)
    info <- sprintf("%d%% done", round(i))
    setTkProgressBar(pb, i, sprintf("test (%s)", info), info)
}
Sys.sleep(5)
close(pb)
Run Code Online (Sandbox Code Playgroud)

有一些百分比评估从数据库加载数据的进度.

我不知道如何在我闪亮的应用程序中使用它.任何想法都会有所帮助.

提前致谢!

*一些简单的应用:

library("shiny")
library("DT")
shinyApp(
  ui = fluidPage(DT::dataTableOutput('tbl')),
  server = function(input, output) {
    output$tbl = DT::renderDataTable(
      iris)
  }
)
Run Code Online (Sandbox Code Playgroud)

Mic*_*jka 7

也许最简单的方法是使用一个包装shinysky它提供busyIndicator.你不会得到一个进度条,但中间的加载动画也应该工作.您还可以通过将文本设置为show,gif以及指示符显示之前的时间来自定义它.(默认情况下一秒钟后).


完整示例:

library("shiny")
library("DT")
library("shinysky")

shinyApp(
  ui = fluidPage(
    busyIndicator(),
    h3("Test"),
    hr(),
    DT::dataTableOutput('tbl')
  ),
  server = function(input, output) {
    output$tbl = DT::renderDataTable({
     data.frame(x = rnorm(7000000), y = runif(7000000))
    })
  }
)
Run Code Online (Sandbox Code Playgroud)