闪亮的仪表板-在完成数据的初始加载之前,显示专用的正在加载(&Q;)页面(&Q) [英] Shiny Dashboard - display a dedicated "loading.." page until initial loading of the data is done
本文介绍了闪亮的仪表板-在完成数据的初始加载之前,显示专用的正在加载(&Q;)页面(&Q)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在server.R
中从数据库初始加载数据,这需要几秒钟的时间。在此之前,显示的页面会失真(选择框中有错误的数据,框的放置也很奇怪,见下文)。
我希望在完全加载数据之前显示不同的页面(或至少在第一个显示的选项卡中显示不同的内容)。
我曾考虑使用基于专用全局变量(INITIAL_LOADING_DONE)的条件来执行某种conditionalPanel
操作,但无论我在哪里尝试放置conditionalPanel
都不起作用。
这是我的UI.R的结构:
shinyUI(
dashboardPage(
dashboardHeader(title = "Title"),
dashboardSidebar(
sidebarMenu(
menuItem("Tab1", tabName = "Tab1",icon = icon("dashboard")),
menuItem("Tab2", tabName = "Tab2", icon = icon("bar-chart-o"))
)
),
dashboardBody(
includeCSS("custom_css.css"),
tabItems(
tabItem(tabName = "Tab1",
fluidRow(<content>),
mainPanel(
fluidRow(<content>)
)
),
tabItem(tabName = "Tab2",
fluidRow(<content>),
mainPanel(
dataTableOutput('my_data_table')
)
)
)
)
)
)
推荐答案
这里有一个使用shinyjs
包的非常简单的示例
思路是在不同的ID下创建加载的"页面"和内容的"页面",将内容页面初始隐藏,待应用就绪后使用show()
和hide()
library(shiny)
library(shinyjs)
load_data <- function() {
Sys.sleep(2)
hide("loading_page")
show("main_content")
}
ui <- fluidPage(
useShinyjs(),
div(
id = "loading_page",
h1("Loading...")
),
hidden(
div(
id = "main_content",
"Data loaded, content goes here"
)
)
)
server <- function(input, output, session) {
load_data()
}
shinyApp(ui = ui, server = server)
这篇关于闪亮的仪表板-在完成数据的初始加载之前,显示专用的正在加载(&Q;)页面(&Q)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文