您可以将女服务员的进度条应用于模态对话框吗?

Can you apply a progress bar from waitress to a modal Dialog?

提问人:king_of_limes 提问时间:11/16/2023 更新时间:11/17/2023 访问量:25

问:

在一个应用程序中,我有一个有时需要一些时间来计算的图。我想用包中的进度条显示此计算的进度。有没有办法将 a 应用于 a ?下面是一个 MWE,其中 应用于整个页面,但如果我在 .shinywaiterwaitressmodalDialogwaitressmodalDialog

我已经检查了演示中的可能性:将其应用于我的实际应用程序不起作用。将其显示为通知会起作用,但我不知道有任何方法可以将通知显示在屏幕中央而不是角落。我想“on elements”是我正在寻找的,但我没有输入或输出 id。actionButtonmodalDialog

library(shiny)
library(shinipsum)
library(waiter)
library(plotly)

complicated_function <- function(){
  waitress <- Waitress$new(theme = "overlay",min = 0,max = 20)
  for(i in 1:20){
    waitress$inc(1)
    Sys.sleep(0.2)
  }
  waitress$close()
  return(random_ggplotly())
}

ui <- fluidPage(
  useWaitress(),
  actionButton("plotButton", "Generate Plot")
)

server <- function(input,output,session){
  modal1 <- modalDialog(
    renderPlotly({
      complicated_function()
    })
  )
  observeEvent(input$plotButton,{
    showModal(modal1)
  })
}
shinyApp(ui, server)
r 闪亮 的进度条

评论


答:

1赞 Roman 11/17/2023 #1

您可以尝试同一包中的 attendantBar:

library(shiny)
library(shinipsum)
library(waiter)
library(plotly)

complicated_function <- function(){
  att <- Attendant$new("progress-bar", hide_on_max = TRUE)
  for(i in 1:20){
    att$set(i * 10)
    Sys.sleep(0.2)
   }
  return(random_ggplotly())
}


ui <- fluidPage(
  useAttendant(),
  
  actionButton("plotButton", "Generate Plot")
)

server <- function(input,output,session){
  
  
  modal1 <- modalDialog(
    attendantBar("progress-bar"),
    renderPlotly({

      complicated_function()
    })
    
  )
  observeEvent(input$plotButton,{
    showModal(modal1)
    
  })
}
shinyApp(ui, server)