【问题标题】:Add progress meter to header in Shiny (shinydashboard/shinydashboardplus)在 Shiny (shinydashboard/shinydashboardplus) 中将进度表添加到标题
【发布时间】:2021-12-17 02:00:54
【问题描述】:

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

编辑:也许关于我的用例的更多细节会有所帮助。当用户单击切换时,我调用了一个分多个步骤运行的函数,整个函数大约需要 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)

【问题讨论】:

    标签: r shiny shinydashboard shinydashboardplus


    【解决方案1】:

    这是否接近您的预期? progress bar on dashboard header

    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)
    

    【讨论】:

    • 更近了!有没有办法动态更新它?我没有在 shinydashboardPlus 中找到 UpdateProgressBar() 函数,就像在 shinyWidgets 中一样,所以这个函数似乎是静态的。我试图获得一个 shinyWidgets::progressBar() 但是当我运行应用程序时出现错误:“if (name != "li" || !is.null(class) || class != "dropdown" ) { : 需要 TRUE/FALSE 的缺失值"
    猜你喜欢
    • 2021-12-04
    • 2015-10-05
    • 1970-01-01
    • 2017-09-04
    • 2016-11-23
    • 2016-06-27
    • 1970-01-01
    • 2019-10-17
    • 1970-01-01
    相关资源
    最近更新 更多