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