我有一个 R Shiny 应用程序,它提示用户输入数据集并单击下载按钮以根据该数据集生成 R Markdown 报告。大部分数据转换是在 .rmd 文件上进行的,闪亮的服务器实际上所做的就是收集输入作为 RMarkdown 的参数并将其呈现为 html。
是否可以实现任何类型的进度条?我尝试合并 withProgress() 但我的服务器代码中没有任何增量可以提供给它。理想情况下,我能够打印正在编织的块的 RStudio 控制台消息,但我真的只是在寻找任何能给用户提供反馈的东西,因为有些报告需要很长时间才能处理。
预先感谢您的任何想法。
{waiter}
包可以帮助您完成任务。检查文档
我在这里使用
onBusy
功能,您可以在渲染文件时向用户显示 Spinner。
注意:您必须在工作目录中创建 input.Rmd 才能使此示例正常工作。
library(shiny)
library(waiter)
ui <- fluidPage(
useWaiter(),
waiterOnBusy(html = spin_loaders(42)),
textInput("name", "Name", value = "Johan Rosa"),
downloadButton("render", "Render report")
)
server <- function(input, output, session) {
Waiter$new(id = )
output$render <- downloadHandler(
filename = function() "report.html",
content = function(file) {
Sys.sleep(5)
rmarkdown::render(
input = "input.Rmd",
output_format = html_document(),
output_file = file
)
}
)
}
shinyApp(ui, server)