闪亮的仪表板-在完成数据的初始加载之前,显示专用的正在加载(&Q;)页面(&Q) [英] Shiny Dashboard - display a dedicated "loading.." page until initial loading of the data is done

查看:11
本文介绍了闪亮的仪表板-在完成数据的初始加载之前,显示专用的正在加载(&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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆