首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于shinydashboard中选择的tabPanel隐藏和显示侧边栏

基于shinydashboard中选择的tabPanel隐藏和显示侧边栏
EN

Stack Overflow用户
提问于 2021-03-20 13:04:42
回答 1查看 329关注 0票数 2

我有下面的shinydashboard,其中我有3 tabPanels。在第一个tabPanel "Resource Allocation"中,我希望在默认情况下打开左、右侧边栏。在第二和第三表面板("Time Series","Longitudinal View"),我只想左侧边栏和右边栏不仅是隐藏的,但不能打开在它之上的"gears"图标,应该被删除。在第四个面板"User Guide"中,我希望没有侧边栏,也不想选择打开其中的一个。

代码语言:javascript
复制
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) { }
)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-21 03:48:06

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

代码语言:javascript
复制
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)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66721931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档