在shinydashboard中基于选定的选项卡面板隐藏和显示侧栏

在shinydashboard中基于选定的选项卡面板隐藏和显示侧栏,r,shiny,shinydashboard,shinydashboardplus,R,Shiny,Shinydashboard,Shinydashboardplus,我有下面的shinydashboard,里面有3个面板。在第一个选项卡panel“资源分配”中,我希望默认情况下打开左右侧栏。在第二个和第三个选项卡面板(“时间序列”、“纵向视图”)中,我只希望左侧栏和右侧栏不只是隐藏,而是通过按其上方的“齿轮”图标根本无法打开,应该将其删除。在第四个面板“用户指南”中,我不希望有侧边栏,也不希望选择打开其中一个 library(shiny) library(shinydashboard) library(shinydashboardPlus) library(

我有下面的shinydashboard,里面有3个面板。在第一个选项卡panel
“资源分配”
中,我希望默认情况下打开左右侧栏。在第二个和第三个选项卡面板(
“时间序列”、“纵向视图”
)中,我只希望左侧栏和右侧栏不只是隐藏,而是通过按其上方的
“齿轮”
图标根本无法打开,应该将其删除。在第四个面板
“用户指南”
中,我不希望有侧边栏,也不希望选择打开其中一个

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)

shinyApp(
  ui = dashboardPage(
    options = list(sidebarExpandOnHover = TRUE),
    header = dashboardHeader(
      titleWidth = "0px"

    ),
    sidebar = dashboardSidebar(minified = TRUE, collapsed = F),
    body = dashboardBody(
      useShinyjs(),#tags$head(tags$script(src="format_number.js")),
      tags$script("document.getElementsByClassName('sidebar-toggle')[0].style.visibility = 'hidden';"),
      tabsetPanel(
        tabPanel("Resource Allocation"),
        tabPanel("Time Series"),
        tabPanel("Longitudinal View"),
        tabPanel("User Guide")
      )
    ),
    controlbar = dashboardControlbar(collapsed = F),
    title = "DashboardPage"
  ),
  server = function(input, output) { }
)

我有一个左侧边栏的解决方案。我相信你可以花点时间,找出右边边栏的解决方案。请注意,这需要更多的工作来微调您的需求。试试这个

library(shiny)
library(shinydashboard)
library(shinydashboardPlus)
library(shinyjs)
library(DT)

ui <- shinydashboardPlus::dashboardPage(
  options = list(sidebarExpandOnHover = TRUE),
  shinydashboardPlus::dashboardHeader(
    #titleWidth = "0px"
  ),
  shinydashboardPlus::dashboardSidebar( disable = TRUE ,
    sidebarMenu(
    selectInput(
      "countries", label = "Select Countries",
      choices = c("B", "C", "A"), selected = "A",
      multiple = TRUE
    ))
  ),# minified = TRUE, collapsed = F),
  controlbar = shinydashboardPlus::dashboardControlbar(id = "controlbar", collapsed = F, 
                      skin = "dark",
                      controlbarMenu(
                        id = "menu",
                        controlbarItem(
                          "Tab 1",
                          "Welcome to tab 1"
                        ),
                        controlbarItem(
                          "Tab 2",
                          "Welcome to tab 2"
                        )
                      )
  ),

  shinydashboard::dashboardBody(
    useShinyjs(),
    tabsetPanel( id="tabset",
                 tabPanel("Resource Allocation", value="tab1", plotOutput("plot")),
                 tabPanel("Time Series", value="tab2", plotOutput("plot2")),
                 tabPanel("Longitudinal View", value="tab3", DTOutput("ir")),
                 tabPanel("User Guide", value="tab4", DTOutput("mt"))
    )
  ),
  # controlbar = dashboardControlbar(collapsed = F),
  title = "DashboardPage"
)
server <- function(input, output) {
  output$plot <- renderPlot(plot(cars))
  output$plot2 <- renderPlot(plot(pressure))
  output$mt <- renderDT(mtcars)
  output$ir <- renderDT(iris)

  observeEvent(input[["tabset"]], {
    if(input[["tabset"]] == "tab4"){
      addClass(selector = "body", class = "sidebar-collapse")
      updateControlbar("controlbar")
    }else{
      removeClass(selector = "body", class = "sidebar-collapse")
    }
  })

}

shinyApp(ui, server)
库(闪亮)
图书馆(shinydashboard)
图书馆(shinydashboardPlus)
图书馆(shinyjs)
图书馆(DT)

我接受了一些编辑的回答,但没看到。我只是让它在ShinydashboardPlus上运行并更新了代码。最新版本对其使用方式有一些更改。请确保您有版本2.0.0