3 votes

Afficher le contenu de menuItem lorsque menuSubItems existent dans Shiny Dashboard

Existe-t-il un moyen d'afficher réellement le contenu dans le volet de contenu d'un tableau de bord Shiny pour un élément de menu avec des sous-éléments de menu existants. Dans l'exemple : j'ai essayé d'ajouter "tabName = "charts"" à l'élément de menu "Charts" afin d'afficher le contenu de l'élément d'onglet "charts". Cependant, aucun effet à part l'ouverture du menu et l'affichage du sous-menu (le volet de contenu affiche toujours le contenu "ancien" de la sélection précédente) :

entrer la description de l'image ici

header <- dashboardHeader()
#> Erreur dans dashboardHeader(): impossible de trouver la fonction "dashboardHeader"

sidebar <- dashboardSidebar(
  sidebarUserPanel("Nom de l'utilisateur",
    subtitle = a(href = "#", icon("circle", class = "text-success"), "En ligne"),
    # Le fichier image doit être dans le sous-répertoire www/
    image = "userimage.png"
  ),
  sidebarSearchForm(label = "Entrer un numéro", "searchText", "searchButton"),
  sidebarMenu(
    # En définissant id, input$tabs donne le nom de l'onglet actuellement sélectionné
    id = "tabs",
    menuItem("Tableau de bord", tabName = "dashboard", icon = icon("dashboard")),
    menuItem("Widgets", icon = icon("th"), tabName = "widgets", badgeLabel = "nouveau",
             badgeColor = "vert"),
    menuItem("Graphiques", icon = icon("bar-chart-o"),
      menuSubItem("Sous-élément 1", tabName = "subitem1"),
      menuSubItem("Sous-élément 2", tabName = "subitem2")
    )
  )
)
#> Erreur dans dashboardSidebar(sidebarUserPanel("Nom de l'utilisateur", subtitle = a(href = "#", : impossible de trouver la fonction "dashboardSidebar"

body <- dashboardBody(
  tabItems(
    tabItem("dashboard",
      div(p("Contenu de l'onglet Tableau de bord"))
    ),
    tabItem("widgets",
      "Contenu de l'onglet Widgets"
    ),
    tabItem("subitem1",
      "Contenu de l'onglet Sous-élément 1"
    ),
    tabItem("subitem2",
      "Contenu de l'onglet Sous-élément 2"
    )
  )
)
#> Erreur dans dashboardBody(tabItems(tabItem("dashboard", div(p("Contenu de l'onglet Tableau de bord"))), : impossible de trouver la fonction "dashboardBody"

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) { }
)
#> Erreur dans shinyApp(ui = dashboardPage(header, sidebar, body), server = function(input, : impossible de trouver la fonction "shinyApp"

devtools::session_info()
#> Informations sur la session -------------------------------------------------------------
#>  paramètre  valeur                       
#>  version    R version 3.4.0 (2017-04-21)
#>  système    x86_64, mingw32             
#>  interface  RTerm                       
#>  langage    (EN)                        
#>  collate    German_Germany.1252         
#>  tz         Europe/Berlin               
#>  date       2018-01-11
#> Packages -----------------------------------------------------------------
#>  package   * version    date       source                          
#>  backports   1.1.0      2017-05-22 CRAN (R 3.4.0)                  
#>  base      * 3.4.0      2017-04-21 local                           
#>  compiler    3.4.0      2017-04-21 local                           
#>  datasets  * 3.4.0      2017-04-21 local                           
#>  devtools    1.13.3     2017-08-02 CRAN (R 3.4.1)                  
#>  digest      0.6.13     2017-12-14 CRAN (R 3.4.3)                  
#>  evaluate    0.10.1     2017-06-24 CRAN (R 3.4.1)                  
#>  graphics  * 3.4.0      2017-04-21 local                           
#>  grDevices * 3.4.0      2017-04-21 local                           
#>  htmltools   0.3.6      2017-04-28 CRAN (R 3.4.0)                  
#>  knitr       1.17       2017-08-10 CRAN (R 3.4.1)                  
#>  magrittr    1.5        2014-11-22 CRAN (R 3.4.0)                  
#>  memoise     1.1.0      2017-04-21 CRAN (R 3.4.0)                  
#>  methods   * 3.4.0      2017-04-21 local                           
#>  Rcpp        0.12.14    2017-11-23 CRAN (R 3.4.3)                  
#>  rmarkdown   1.6        2017-06-15 CRAN (R 3.4.0)                  
#>  rprojroot   1.2        2017-01-16 CRAN (R 3.4.0)                  
#>  stats     * 3.4.0      2017-04-21 local                           
#>  stringi     1.1.5      2017-04-07 CRAN (R 3.4.0)                  
#>  stringr     1.2.0      2017-02-18 CRAN (R 3.4.0)                  
#>  tools       3.4.0      2017-04-21 local                           
#>  utils     * 3.4.0      2017-04-21 local                           
#>  withr       2.1.1.9000 2018-01-05 Github (jimhester/withr@df18523)
#>  yaml        2.1.14     2016-11-12 CRAN (R 3.4.0)

4voto

Pork Chop Points 12630

Une grande crédit va à cette question React to menuItem() tab selection. La seule chose un peu ennuyeuse est que vous devez cliquer de nouveau sur l'onglet Charts mais je pense que c'est correct

library(shiny)
library(shinydashboard)

convertMenuItem <- function(mi,tabName) {
  mi$children[[1]]$attribs['data-toggle']="tab"
  mi$children[[1]]$attribs['data-value'] = tabName
  if(length(mi$attribs$class)>0 && mi$attribs$class=="treeview"){
    mi$attribs$class=NULL
  }
  mi
}

header <- dashboardHeader()

sidebar <- dashboardSidebar(
  sidebarUserPanel("Pork Chop",
                   subtitle = a(href = "#", icon("circle", class = "text-success"), "Online"),
                   image = "https://vignette.wikia.nocookie.net/fanfictiondisney/images/9/9e/Pumba_3.jpg/revision/latest?cb=20120708163413"
  ),
  sidebarSearchForm(label = "Entrer un numéro", "searchText", "searchButton"),
  sidebarMenu(
    id = "tabs",
    menuItem("Tableau de bord", tabName = "dashboard", icon = icon("dashboard")),
    menuItem("Widgets", icon = icon("th"), tabName = "widgets", badgeLabel = "new", badgeColor = "green"),
    convertMenuItem(menuItem("Charts", tabName = "charts",icon = icon("bar-chart-o"),selected=T,
             menuSubItem("Sous-élément 1", tabName = "subitem1"),
             menuSubItem("Sous-élément 2", tabName = "subitem2")),"charts")
  )
)

body <- dashboardBody(
  tabItems(
    tabItem("dashboard",div(p("Contenu de l'onglet de tableau de bord"))),
    tabItem("widgets","Contenu de l'onglet Widgets"),
    tabItem("charts","Onglet Charts"),
    tabItem("subitem1","Contenu de l'onglet Sous-élément 1"),
    tabItem("subitem2","Contenu de l'onglet Sous-élément 2")
  )
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) { }
)

entrer la description de l'image ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X