Saltar al contenido

Agregar el logotipo de una empresa al encabezado ShinyDashboard

Solución:

He estado trabajando con un truco para esto (y sé que no lo solicitaste, pero aquí hay un logotipo en el que se puede hacer clic):

library(shiny)
library(shinydashboard)

dbHeader <- dashboardHeader()
dbHeader$children[[2]]$children <-  tags$a(href="http://mycompanyishere.com",
                                           tags$img(src="logo.png",height="60",width="200"))

dashboardPage(
       dbHeader,
       dashboardSidebar(),
       dashboardBody()
)

Así que esto anida un shiny.tag dentro del encabezado. La segunda ranura en este objeto brillante en particular es la ranura del logotipo (necesitará un ‘logo.png’ en su carpeta / www / en el directorio de la aplicación)

EDITAR:

Acabo de verificar, y a partir de ahora, este truco ya no debería ser necesario, puede insertar el html directamente desde la función dashboardHeader a través de la title= parámetro, (antes, ese parámetro solo aplicaba texto),

Creo que la respuesta aún podría ser útil como método para modificar las funciones brillantes existentes donde las cosas ESTÁN aunque codificado.

Aquí está el método ahora:

dashboardPage(
    dashboardHeader(title = tags$a(href="http://mycompanyishere.com",
                                    tags$img(src="logo.png")))

o, agregando un poco más de magia al logo (también uso mi logo como barra de carga):

# Takes a location 'href', an image location 'src', a loading gif 'loadingsrc'
# height, width and alt text, and produces a loading logo that activates while
# Shiny is busy
loadingLogo <- function(href, src, loadingsrc, height = NULL, width = NULL, alt = NULL) {
  tagList(
    tags$head(
      tags$script(
        "setInterval(function(){
                     if ($('html').attr('class')=='shiny-busy') {
                     $('div.busy').show();
                     $('div.notbusy').hide();
                     } else {
                     $('div.busy').hide();
                     $('div.notbusy').show();
           }
         },100)")
  ),
  tags$a(href=href,
         div(class = "busy",  
             img(src=loadingsrc,height = height, width = width, alt = alt)),
         div(class="notbusy",
             img(src = src, height = height, width = width, alt = alt))
   )
  )
}

dashboardBody(
  dashboardHeader(title = loadingLogo('http://mycompanyishere.com',
                                      'logo.png',
                                      'loader.gif'),
  dashboardSidebar(),
  dashboardBody()
)

Aquí está mi truco (ponga su logotipo, como se ha mencionado antes, en un www subdirectorio del directorio de su aplicación).
Porque dashboardHeader() espera un elemento de etiqueta de tipo li y clase dropdown, podemos pasar esos elementos en lugar de dropdownMenus:

library(shiny)
library(shinydashboard)

dbHeader <- dashboardHeader(title = "My Dashboard",
                            tags$li(a(href="http://shinyapps.company.com",
                                      icon("power-off"),
                                      title = "Back to Apps Home"),
                                    class = "dropdown"),
                            tags$li(a(href="http://www.company.com",
                                      img(src="company_logo.png",
                                          title = "Company Home", height = "30px"),
                                      style = "padding-top:10px; padding-bottom:10px;"),
                                    class = "dropdown"))

server <- function(input, output) {}

shinyApp(
    ui = dashboardPage(
        dbHeader,
        dashboardSidebar(),
        dashboardBody()
    ),
    server = server
)
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *