【问题标题】:Loading Page for Shiny Dashboard闪亮仪表板的加载页面
【发布时间】:2018-04-30 11:44:17
【问题描述】:

我正在尝试为我的仪表板创建一个加载页面,但我似乎无法让它工作。我按照这里的例子; Shiny Dashboard - display a dedicated "loading.." page until initial loading of the data is done 但它适用于流畅的页面而不是闪亮的仪表板,我不知道如何调整它。

任何帮助将不胜感激!

我希望加载页面只是一个流畅的页面(没有标题或侧边栏),然后让我的主仪表板具有闪亮的仪表板方面。

额外:如果我可以在加载屏幕上添加一个 gif,那就太棒了。比如:

<iframe src="https://giphy.com/embed/BlmF3MhGfa4SY" width="480" height="360" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/plane-BlmF3MhGfa4SY">via GIPHY</a></p>

[中断]

library (shiny)
library (shinydashboard)
library(shinyjs)


rm(list=ls())

appCSS <- "
#loading_page {
  position: absolute;
  background: #000000;
  opacity: 0.9;
  z-index: 100;
  left: 0;
  right: 0;
  height: 100%;
  text-align: center;
  color: #FFFFFF;
}
"
header <- dashboardHeader()
sidebar <- dashboardSidebar()
body <- dashboardBody("It worked!")


ui <- dashboardPage(
  useShinyjs(),
  inlineCSS(appCSS),
  div(
    id = "loading_page",
    dashboardHeader(),
    dashboardSidebar(),
    dashboardBody("Loading...")
  ),
  hidden(
    div(
      id = "main_content",
      header, sidebar, body
    )
  )
)


server = function(input, output, session) {
    # Simulate work being done for 4 second
    Sys.sleep(4)

    hide("loading_page")
    show("main_content") 
  }

shinyApp(ui, server)

【问题讨论】:

  • 以下使用shinycssloaders的回答对您有帮助吗?

标签: r shiny shinydashboard shinyjs


【解决方案1】:

试试这个库shinycssloaders

library(shiny)
library(shinycssloaders)
library(highcharter)

ui <- fluidPage(
        mainPanel(
                plotOutput("my_plot")  %>% withSpinner(color="#0dc5c1")
        )
)

server <- function(input, output){
        
        output$my_plot <- renderPlot({
                Sys.sleep(1)
                plot(mtcars)})
}

shinyApp(ui, server)

【讨论】:

  • 这是一个很好的解决方案,只需要对代码进行很少的改动!我非常喜欢它在 UI 方面,因为它考虑了渲染时间(不像withProgress bar)。唯一的缺点是我有多个带有多个绘图的选项卡,所以它只需要大量的复制和粘贴!
【解决方案2】:

试试这个库:waiter 使用最少且干净的代码非常易于使用。带有多个加载动画。

用法:

library(shiny)
library(waiter)

ui <- fluidPage(
  use_waiter(),
  actionButton("show", "Show loading for 5 seconds")
)

server <- function(input, output, session){
  observeEvent(input$show, {
    show_waiter(spin_fading_circles())
    Sys.sleep(4)
    hide_waiter()
  })
}

if(interactive()) shinyApp(ui, server)

链接:https://cran.r-project.org/web/packages/waiter/readme/README.html

【讨论】:

  • 我喜欢这个!您可以为其添加自定义动画吗? (比如

    giphy.com/gifs/flight-WKJpCXfvBHyla">via GIPHY

    )还有,加载页面上的进度条呢?
  • 您在闪亮的仪表板中如何有效地放置它?因为将其设置在 dashboardPage() 的顶部仍然会在仪表板本身的最开始显示。
猜你喜欢
  • 2023-03-13
  • 2021-12-17
  • 2018-01-24
  • 1970-01-01
  • 2015-04-22
  • 2015-04-07
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
相关资源
最近更新 更多