0

我有一个使用 shinydashboard 和 shinydashboardPlus 的闪亮应用程序。在标题中,我能够添加一个 switchInput 以允许用户在两​​个选项之间切换。更改选项时,会更新整个 UI(相当复杂)以根据用户选择更改各种标签。这个过程需要几秒钟,导致应用程序没有响应,所以我想在 switchInput 旁边添加一个进度表或微调器,但我所有的尝试都失败了。(我尝试从 shinydashboardPlus 和 shinyWidgets 添加进度条,但这些都没有真正出现在标题上。)

编辑:也许关于我的用例的更多细节会有所帮助。当用户单击切换时,我调用了一个分多个步骤运行的函数,整个函数大约需要 20 秒。在每一步之后,我想更新进度条或微调器,以提示用户正在发生某些事情。另外,在单击之前和函数返回之后,我想隐藏进度条或微调器。

这是一些非常简化的代码,其标头包括 switchInput。

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyWidgets)

# Define UI for application that draws a histogram
ui <- dashboardPage(skin = 'blue', 
                    
shinydashboardPlus::dashboardHeader(title = 'Example',
    leftUi = tagList(
        switchInput(inputId = 'swtLabels', label = 'Labels', value = TRUE,
                    onLabel = 'Label 1', offLabel = 'Label 2',
                    onStatus = 'info', offStatus = 'info', size = 'mini', 
                    handleWidth = 230)
        )
    ),
    dashboardSidebar(),
    dashboardBody()
)

server <- function(input, output) {}

# Run the application 
shinyApp(ui = ui, server = server)
4

1 回答 1

1

这是否接近您的预期? 仪表板标题上的进度条

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyWidgets)


# Define UI for application that draws a histogram
ui <- dashboardPage(skin = 'blue', 
                    
                    shinydashboardPlus::dashboardHeader(title = 'Example',
                                                        leftUi = tagList(
                                                          switchInput(inputId = 'swtLabels', label = 'Labels', value = TRUE,
                                                                      onLabel = 'Label 1', offLabel = 'Label 2',
                                                                      onStatus = 'info', offStatus = 'info', size = 'mini', 
                                                                      handleWidth = 230),
                                                          shinydashboardPlus::progressBar(
                                                                        value = 100,
                                                                        striped = TRUE,
                                                                        animated = TRUE,
                                                                        label = "loading...100%"
                                                                      )
                                                           )
                                                        ),
                    
                    
                    dashboardSidebar(),
                    dashboardBody()
                
)

server <- function(input, output) {}

# Run the application 
shinyApp(ui = ui, server = server)
于 2021-11-02T18:40:38.260 回答