我已经通过使用shinycssloaders包了解了如何将加载图标与输出(即plotOutput)结合使用。我有一个闪亮的模块,类似于下面的pseduocode:
super_module_server <- function(id) {
moduleServer(
id,
function(input, output, sesion) {
data <- sql_query()
selected <- mod_selectInput_server(data)
})
}在这段代码中,sql_query()从远程数据库检索数据并将其作为tibble返回。它被传递给mod_selectInput_server,后者使用该数据填充标准selectInput。
有没有办法向用户演示SQL查询正在运行(就像旋转的图标一样),而不是在数据填充之前只留下一个空的下拉列表?
发布于 2021-03-09 04:05:33
当然,我们可以在下拉列表旁边添加一个旋转加载图标。
找到一个你喜欢的小的加载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)https://stackoverflow.com/questions/66535982
复制相似问题