2017-11-16 6 views
1

Ich versuche eine Lade-Seite für mein Dashboard zu erstellen, aber ich kann es nicht funktionieren lassen. Ich bin dem Beispiel hier gefolgt; Shiny Dashboard - display a dedicated "loading.." page until initial loading of the data is done aber es ist für flüssige Seite und nicht glänzendes Armaturenbrett und ich kann nicht herausfinden, wie man es anpaßt.Seite wird geladen für Shiny Dashboard

Jede Hilfe wäre willkommen!

Ich würde gerne die Ladeseite nur eine flüssige Seite sein (keine Kopfzeile oder Seitenleiste) und dann habe mein Haupt-Dashboard die glänzenden Dashboard-Aspekte.

Extra: Wenn ich ein Gif zum Ladebildschirm hinzufügen könnte, wäre das erstaunlich. Etwas wie:

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

[Pause]

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

Hat die unten Antwort mit 'shinycssloaders' Ihnen helfen? – amrrs

Antwort

2

Versuchen Sie, diese Bibliothek 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) 
+0

Dies ist eine nette eloquente Lösung, die nur sehr wenig Änderung am Code erfordert! Ich mag es sehr, dass es auf der UI-Seite ist, da es die Renderzeit berücksichtigt (im Gegensatz zu "withProgress" bar). Der einzige Nachteil ist, dass ich mehrere Tabs mit mehreren Plots habe, so dass es nur eine anständige Menge an Kopieren und Einfügen benötigt! – Kevin

Verwandte Themen