【问题标题】:R Shiny - loading icon while SQL query populates selectInputR Shiny - 在 SQL 查询填充 selectInput 时加载图标
【发布时间】:2021-03-08 19:31:02
【问题描述】:

我已经看到使用shinycssloaders 包如何将加载图标与输出结合使用(即plotOutput)。我有一个类似于这个伪代码的 Shiny 模块:

super_module_server <- function(id) {
    moduleServer(
      id,
      function(input, output, sesion) {
          data <- sql_query()
          selected <- mod_selectInput_server(data)
      })
}

在此代码中,sql_query() 从远程数据库检索数据并将其作为小标题返回。它被传递给mod_selectInput_server,后者使用该数据填充标准selectInput

有没有办法向用户展示 SQL 查询正在运行(如旋转图标),而不是在数据填充之前留下一个空的下拉列表?

【问题讨论】:

  • 你也可以试试shinycustomloader

标签: r shiny


【解决方案1】:

当然,我们可以在下拉列表旁边添加一个旋转加载图标。

找到一个您喜欢的小型加载 gif 并将其放在您的应用程序 www 文件夹中。

下面的最小示例展示了我们如何使用 shinyjs 来显示和隐藏我们的加载 gif。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  
    #Allow our app to use shinyjs
    useShinyjs(),
    
    #Our dropdown
    selectInput("mydropdown", "Dynamic Dropdown", choices = "Nothing Here Yet"),
    
    #An action button to populate our dropdown, simulating a long running SQL query
    actionButton("myactionbutton", "Populate Dropdown"),
    
    #Our loading icon, made hidden by default
    hidden(img(id = 'icon_loading', src = 'loading.gif'))
    
)

server <- function(input, output, session) {
  
    #Runs when myactionbutton is clicked
    observeEvent(input$myactionbutton, {
        
        #Show our loading icon
        shinyjs::show(id = 'icon_loading')
        
        #Sleep for 5 seconds to simulate long running SQL query
        Sys.sleep(5)
        
        #Update dropdown
        updateSelectInput(session, "mydropdown", choices = runif(5))
        
        #Hide our loading icon
        shinyjs::hide(id = 'icon_loading')
        
    })
    
}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 2016-05-26
    • 2017-02-18
    • 2021-12-04
    • 1970-01-01
    • 2019-08-04
    • 1970-01-01
    • 1970-01-01
    • 2019-07-13
    相关资源
    最近更新 更多