【问题标题】:R shiny collapsible sidebarR闪亮的可折叠侧边栏
【发布时间】:2019-11-13 01:20:57
【问题描述】:

我在 R shiny 中创建了以下应用程序模板:

 library(shiny)
 library(shinyjs)

 ui <- fluidPage(
 useShinyjs(),
 navbarPage("",actionButton("toggleSidebar", "toggle", icon = 
 icon("database")),
          tabPanel("tab",
                  div( id ="Sidebar",sidebarPanel(
                  )),mainPanel() ))))


   server <-function(input, output, session) {
   observeEvent(input$toggleSidebar, {
   shinyjs::toggle(id = "Sidebar")
  }) }


 shinyApp(ui, server)

应用程序将在侧边栏中创建一个切换按钮。该按钮应出现在导航栏中,而不是侧边栏上方。实际的切换按钮出现在单词选项卡旁边的上方。但是,它是不可见的。

【问题讨论】:

  • mainPanel() 后面的 ) 太多了。

标签: r shiny sidebar collapsable


【解决方案1】:

您提到的不可见部分实际上是您拥有的空标题参数“”。如下所示将切换按钮置于标题位置:

 library(shiny)
 library(shinyjs)

 ui <- fluidPage(
 useShinyjs(),
 navbarPage(actionButton("toggleSidebar", "toggle", icon = 
 icon("database")),
          tabPanel("tab",
                  div( id ="Sidebar",sidebarPanel(
                  )),mainPanel() )))


   server <-function(input, output, session) {
   observeEvent(input$toggleSidebar, {
   shinyjs::toggle(id = "Sidebar")
  }) }


 shinyApp(ui, server)

【讨论】:

  • 我使用了“栏”图标,因为它更标准。
  • 我没有改变问题但同意了。
【解决方案2】:

我用多个 tabPanel 做了一个例子。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage(title = tagList("title",actionLink("sidebar_button","",icon = icon("bars"))),
             id = "navbarID",
             tabPanel("tab1",
                      div(class="sidebar"
                          ,sidebarPanel("sidebar1")
                      ),
                      mainPanel(
                        "MainPanel1"
                      )
             ),
             tabPanel("tab2",
                      div(class="sidebar"
                          ,sidebarPanel("sidebar2")
                      ),
                      mainPanel(
                        "MainPanel2"
                      )
             )
  )
)

server <-function(input, output, session) {
  
  observeEvent(input$sidebar_button,{
    shinyjs::toggle(selector = ".sidebar")
  })
  
}

shinyApp(ui, server)

========================================

我创建了一个不使用侧面板类的更简单示例,但我不确定它是否适用于所有环境。

library(shiny)
library(shinyjs)

ui <- fluidPage(
  useShinyjs(),
  navbarPage(title = tagList("title",actionLink("sidebar_button","",icon = icon("bars"))),
             tabPanel("tab1",
                      sidebarPanel("sidebar1"),
                      mainPanel("MainPanel1")
             ),
             tabPanel("tab2",
                      sidebarPanel("sidebar2"),
                      mainPanel("MainPanel2")
             )
  )
)

server <-function(input, output, session) {
  observeEvent(input$sidebar_button,{
    shinyjs::toggle(selector = ".tab-pane.active div:has(> [role='complementary'])")
  })
}

shinyApp(ui, server)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-23
    • 2018-09-25
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 2016-11-14
    • 2014-06-20
    • 1970-01-01
    相关资源
    最近更新 更多