Соедините tabItems и sub-items с основным корпусом в shinydashboard - PullRequest
0 голосов
/ 01 октября 2019

У меня есть Shinydashboard с tabItems и вложенными элементами. Каждый из них при выборе должен отображать соответствующий элемент в основном теле, но это не работает.

#ui.r
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
ui <- dashboardPagePlus(
  dashboardHeaderPlus(title = "AA Tester"),
  dashboardSidebar(
    dashboardSidebar(
      sidebarMenu(id = 'sidebarmenu',
                  menuItem('Introduction', tabName = 'intro', icon = icon('dashboard')),
                  menuItem('Explore Funds', tabName = 'expf',
                           icon = icon('th'),
                           menuItem('Choose Strategy',
                                    tabName = 'retAA',
                                    icon = icon('line-chart'),
                                    selectInput("str", "Strategies:", choices=c("Strategy 1",
                                                                                     "Strategy 2",
                                                                                     "Strategy 3",
                                                                                     "Strategy 4",
                                                                                     "Strategy 5",
                                                                                     "Strategy 6",
                                                                                     "Strategy 7",
                                                                                     "Strategy 8"),multiple = T,selected = "Strategy 1"))
                  )))


  ),
  dashboardBody(
    tabItems(
      # First tab content
      tabItem(tabName = "intro",
              fluidRow(
                h2("Intro tab content")
              )
      ),

      # Second tab content
      tabItem(tabName = "retAA",
              h2("Exp tab content")
      )
    )
  )
)
#server.r
server <- function(input, output) { }

1 Ответ

1 голос
/ 01 октября 2019

Необходимо внести несколько изменений:

  1. Использовать menuSubItem вместо menuItem для вкладки retAA
  2. retAA и selectInput должно бытьбратья и сестры
  3. Добавление пользовательского интерфейса для отображения стратегий
  4. Вам необходимо добавить серверные коды, которые прослушивают изменения в selectInput

#ui.r
library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
ui <- dashboardPagePlus(
    dashboardHeaderPlus(title = "AA Tester"),
    dashboardSidebar(
        dashboardSidebar(
            sidebarMenu(id = 'sidebarmenu',
                        menuItem('Introduction', tabName = 'intro', icon = icon('dashboard')),
                        menuItem('Explore Funds', tabName = 'expf',
                                 icon = icon('th'),
                                 menuSubItem('Choose Strategy',
                                          tabName = 'retAA',
                                          icon = icon('line-chart')), # point 1
                                 selectInput("str", "Strategies:", choices=c("Strategy 1",
                                                                             "Strategy 2",
                                                                             "Strategy 3",
                                                                             "Strategy 4",
                                                                             "Strategy 5",
                                                                             "Strategy 6",
                                                                             "Strategy 7",
                                                                             "Strategy 8"),multiple = T,selected = "Strategy 1") # point 2
                        )))


    ),
    dashboardBody(
        tabItems(
            # First tab content
            tabItem(tabName = "intro",
                    fluidRow(
                        h2("Intro tab content")
                    )
            ),

            # Second tab content
            tabItem(tabName = "retAA",
                    h2("Exp tab content"),
                    textOutput("userStr") # point 3
            )
        )
    )
)
#server.r
server <- function(input, output) {
    output$userStr <- renderText(input$str) # point 4
}

shiny::shinyApp(ui,server)

...