在shinydashboardPlus中单击MenuItem时自动弹出右侧栏 [英] Automatic rightSidebar popup when menuItem is clicked in shinydashboardPlus

查看:0
本文介绍了在shinydashboardPlus中单击MenuItem时自动弹出右侧栏的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用shinydashboardPlus和shinydashboard制作了一个闪亮的应用程序,希望在用户单击带有我的绘图的菜单项时自动打开右侧栏。

几个小时以来,我一直在试图寻找这个问题的答案,但我什么都没有找到。我不确定这是否可能,但我想我应该在这里问问是否有人对如何做到这一点有任何见解(如果可能)。

示例应用:

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

header<-dashboardHeaderPlus(enable_rightsidebar = TRUE,
rightSidebarIcon = "bars")

sidebar<- dashboardSidebar(
sidebarMenu(
menuItem("Data",
tabName = "data"),
menuItem("Plots",
tabName = "plots",
icon = icon("bar-chart-o"))))

body<-dashboardBody(
tabItems(
tabItem(tabName = "data","DATA"),
tabItem(tabName = "plots",
box(plotOutput("plot1")))))

rightsidebar<-rightSidebar(
background = "dark",
rightSidebarTabContent(
id=1,
title = "Customize Plots",
icon = "desktop",
active = T,
sliderInput("slider", "Number of observations:", 1, 100, 50)))

ui<- dashboardPagePlus(header = header,
sidebar = sidebar,
body = body,
rightsidebar = rightsidebar,

)

server<- function(input,output,session){
set.seed(122)
histdata <- rnorm(500)

output$plot1<- renderPlot({
data <- histdata[seq_len(input$slider)]
hist(data)
})

}
shinyApp(ui, server)

css

查看推荐答案,您可以看到当打开css类时,它会添加到右侧边栏中。

您可以使用shinyjs包在SHILINY中对此进行编程,以便在选择左侧边栏上的Plots菜单项时添加此类。首先,您需要给左侧边栏添加一个id,这样SHINY就知道选择了哪个选项卡,然后每当选择/取消选择‘Plots’选项卡时,添加/删除带有shinyjs的类。

下面的工作代码。

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

header<-dashboardHeaderPlus(enable_rightsidebar = TRUE,
                            rightSidebarIcon = "bars")

sidebar<- dashboardSidebar(
  sidebarMenu(id = "left_sidebar",
    menuItem("Data",
             tabName = "data"),
    menuItem("Plots",
             tabName = "plots",
             icon = icon("bar-chart-o"))))

body<-dashboardBody(
  tabItems(
    tabItem(tabName = "data","DATA"),
    tabItem(tabName = "plots",
            box(plotOutput("plot1")))))

rightsidebar<-rightSidebar(
  background = "dark",
  rightSidebarTabContent(
    id=1,
    title = "Customize Plots",
    icon = "desktop",
    active = T,
    sliderInput("slider", "Number of observations:", 1, 100, 50)))

ui<- dashboardPagePlus(
  shinyjs::useShinyjs(),
  header = header,
  sidebar = sidebar,
  body = body,
  rightsidebar = rightsidebar,

)

server <- function(input,output,session){
  set.seed(122)
  histdata <- rnorm(500)

  observe({
    if (input$left_sidebar == "plots") {
      shinyjs::addClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    } else {
      shinyjs::removeClass(selector = "aside.control-sidebar", class = "control-sidebar-open")
    }
  })

  output$plot1<- renderPlot({
    data <- histdata[seq_len(input$slider)]
    hist(data)
  })

}
shinyApp(ui, server)

这篇关于在shinydashboardPlus中单击MenuItem时自动弹出右侧栏的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆