Страница загрузки для Shiny Dashboard

Я пытаюсь создать страницу загрузки для своей панели инструментов, но не могу заставить ее работать. Я последовал примеру здесь; Shiny Dashboard - отображение специальной страницы загрузки .. пока не будет выполнена первоначальная загрузка данных, но это для подвижной страницы, а не для блестящей панели инструментов, и я не могу понять, как ее адаптировать.

Любая помощь будет оценена по достоинству!

Я бы предпочел, чтобы страница загрузки была просто подвижной страницей (без заголовка или боковой панели), а затем чтобы моя основная панель инструментов имела блестящие аспекты панели инструментов.

Дополнительно: если бы я мог добавить гифку на экран загрузки, это было бы замечательно. Что-то вроде:

<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)

person Kevin    schedule 16.11.2017    source источник
comment
Помог ли вам приведенный ниже ответ с использованием shinycssloaders?   -  person amrrs    schedule 17.11.2017


Ответы (2)


Попробуйте эту библиотеку 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)

введите описание изображения здесь

person Pork Chop    schedule 16.11.2017
comment
это красивое и красноречивое решение, требующее очень небольшого изменения кода! Мне очень нравится, что он находится на стороне пользовательского интерфейса, поскольку он учитывает время рендеринга (в отличие от withProgress bar). Единственным недостатком является то, что у меня есть несколько вкладок с несколькими графиками, поэтому для этого просто требуется приличное количество копирования и вставки! - person Kevin; 17.11.2017

Попробуйте эту библиотеку: 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

person Ahmad M.    schedule 16.04.2019
comment
Мне это нравится! Можете ли вы добавить к нему собственную анимацию? (скажем ‹iframe src = giphy.com/embed/WKJpCXfvBHyla width = 480 height = 360 frameBorder = 0 class = giphy-embed allowFullScreen ›‹/iframe› ‹p› ‹a href=giphy.com/ gifs / flight-WKJpCXfvBHyla ›через GIPHY ‹/a› ‹/p›) также, как насчет индикатора выполнения на странице загрузки? - person Kevin; 16.08.2019
comment
Где вы эффективно разместите это на блестящей панели инструментов? Потому что установка его в верхней части dashboardPage() по-прежнему отображается в самом начале самой панели. - person yeahman269; 21.08.2020