R Shinydashboard: как свернуть MenuItem () с помощью selectInput() (фильтры) в нем?

#r #shiny

#r #блестящий

Вопрос:

Я хотел бы отобразить поля ввода Shinydashboard как тип элемента menuSubItem, однако мне сложно написать решение.

  • Бытовое проникновение (выпадающий список по щелчку)
    • Сохранить-фильтры
    • Кнопка
  • Продажи (Меню проникновения в домохозяйства сворачивается при нажатии, а меню продаж выпадает)
    • фильтр x

У вас есть какое-либо решение для этого?

ui.R

 library(shiny)
library(shinydashboard)
library(leaflet)

source("R/load_metadata.R", chdir=TRUE)


# Header of the  dashboard
header <- dashboardHeader(
  title = "x",
  titleWidth = 350,
  dropdownMenuOutput("task_menu")

  )


# Sidebar of the dashboard
sidebar <- dashboardSidebar(
  sidebarMenu(
    id = "menu_tabs",
    menuItem("Household Penetration", tabName = "menutab1", icon = icon("percent")),
        selectInput("storeInput", label = "Store",
                     choices = STOREFILTER$STORE_NAME,
                     selected = STOREFILTER$STORE_NAME[1]),
        actionButton("Button", "Filter Map"),
    menuItem("Sales", tabName = "menutab2", icon = icon("euro"))
  )
)


# Body of the dashboard
body <- dashboardBody(
  tabItems(
    tabItem(
      tabName = "menutab1",
      tags$style(type = "text/css", "#mymap {height: calc(100vh - 80px) !important;}"),
      leafletOutput("mymap")),
    tabItem(
      tabName = "menutab2",
      tags$style(type = "text/css", "#mymap {height: calc(100vh - 80px) !important;}"),
      h2("Dashboard tab content")
    )
  )
)


# Shiny UI
ui <- dashboardPage(
  header,
  sidebar,
  body,
  tags$head(
    tags$style(HTML(type='text/css', "#Button { width:40%; margin-left: 30%; margin-right: 30%; background-color: #3C8DBC; color: black; font-weight: bold; border: 0px}")))
)
  

Ответ №1:

Вы можете показывать / скрывать свои поля ввода с помощью conditionalPanel в соответствии с выбранным меню:

 conditionalPanel(
  condition = "input.menu_tabs == 'menutab1'",
  selectInput("storeInput", label = "Store",
              choices = STOREFILTER$STORE_NAME,
              selected = STOREFILTER$STORE_NAME[1]),
  actionButton("Button", "Filter Map")
)