es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Muestra el spinner shinycssloaders hasta que la tabla DT completa (en shiny) esté lista.

El paquete R shinycssloaders hace un buen trabajo mostrando un spinner inicialmente. Pero si la tabla es muy grande, solo se muestra inicialmente y luego se ve el encabezado durante un tiempo mientras el usuario espera por la tabla. En mis datos reales, esta espera es más larga que en este ejemplo, por lo que el usuario realmente no sabe lo que está sucediendo.

Me gustaría que el spinner siga mostrándose hasta que todo el conjunto de datos (no solo el encabezado) esté listo para verse.

¿Algún consejo?

Zev

library(shiny)
library(DT)
library(shinycssloaders)
shinyApp(
  ui = fluidPage(fluidRow(column(12,withSpinner(DT::DTOutput('tbl'))))),
  server = function(input, output) {
    Sys.sleep(2)
    output$tbl = renderDT(
      data.frame(a = 1:10000000, b = 1:10000000)
    )
  }
)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Una sugerencia es usar la función waiter() del paquete shinycssloaders para mostrar el spinner hasta que se haya cargado todo el conjunto de datos.

    “`{r}
    library(shiny)
    library(DT)
    library(shinycssloaders)

    shinyApp(
    ui = fluidPage(
    fluidRow(
    column(12,
    withSpinner(
    DT::DTOutput(‘tbl’)
    )
    )
    ),
    tags$head(tags$style(HTML(“.shiny-spinner {z-index: 1050 !important;}”)))
    ),
    server = function(input, output) {
    output$tbl = renderDT({
    Waiter::with_spinner({
    data.frame(a = 1:10000000, b = 1:10000000)
    })
    })
    }
    )
    “`

    La función waiter() mostrará un spinner hasta que se haya cargado todo el conjunto de datos, envolviéndolo alrededor de la función data.frame() en la función renderDT(). También hemos agregado código CSS para asegurarnos de que el spinner se muestre en la parte superior de la tabla DT.

Comments are closed.