Показать содержимое для menuItem с существующим (динамически созданным) menuSubItems при загрузке (Shiny Dashboard) - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть приложение с menuItem, которое также должно показывать вкладку при нажатии и несколько вложенных menuSubItem.Я нашел код для достижения этой цели: Показать содержимое для menuItem, когда menuSubItems существуют в Shiny Dashboard .Вкладка "charts", прикрепленная к пункту меню, должна отображаться при загрузке приложения.Поэтому я храню вкладки, прикрепленные к menuSubItems, в списке, поскольку они будут генерироваться динамически позже.

Однако при открытии приложения содержимое вкладки "charts" не отображается.

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
}

uiTabs <- function() {
  listTabs <- list(tabItem("charts","Charts Tab"),
                   tabItem("subitem1","Sub-item 1 tab content"),
                   tabItem("subitem2","Sub-item 2 tab content"),
                   tabItem("other","Other tab content"))
  do.call(tabItems, listTabs)
}

header <- dashboardHeader()

sidebar <- dashboardSidebar(
  sidebarMenu(
    convertMenuItem(menuItem("Charts", tabName = "charts",selected=T,
                             menuSubItem("Sub-item 1", tabName = "subitem1"),
                             menuSubItem("Sub-item 2", tabName = "subitem2")),"charts"),
    menuItem(tabName = "other", "Other tab")
  )
)

body <- dashboardBody(
  tabItems(
    uiOutput("tabs")
  )
)

shinyApp(
  ui = dashboardPage(header, sidebar, body),
  server = function(input, output) {
    output$tabs <- renderUI({uiTabs()})
  }
)
...