Shinydashboard: сделайте боковую панель открытой над корпусом вместо того, чтобы сжимать основной корпус - PullRequest
0 голосов
/ 09 января 2019

Вместо того, чтобы открывать боковую панель и сжимать тело, я бы хотел, чтобы боковая панель открывалась, проходя через тело, чтобы она не испортила размер моего вывода.
Как я могу достичь этого, если это возможно?

Текущее поведение:

From

Желаемое поведение:

To:

Код, используемый на примере:

library(shinydashboard)

ui <- dashboardPage(
  dashboardHeader(title = "Basic dashboard"),
  dashboardSidebar(
    sidebarMenu(
      menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
      menuItem("Widgets", tabName = "widgets", icon = icon("th"))
    )
  ),
  dashboardBody(
    tabItems(
      # First tab content
      tabItem(tabName = "dashboard",
              fluidRow(
                box(plotOutput("plot1", height = 250)),

                box(
                  title = "Controls",
                  sliderInput("slider", "Number of observations:", 1, 100, 50)
                )
              )
      ),

      # Second tab content
      tabItem(tabName = "widgets",
              h2("Widgets tab content")
      )
    )
  )
)

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

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

shinyApp(ui, server)

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте этот обновленный код и посмотрите, соответствует ли он вашим потребностям. С моей точки зрения, по крайней мере, наличие боковой панели над графиком выглядит не слишком хорошо. Почему бы не открыть свое приложение без присутствия боковой панели?

    library(shinydashboard)
    library(shinyjs)

    ui <- dashboardPage(
   dashboardHeader(title = "Basic dashboard"),
 dashboardSidebar(
  sidebarMenu(
  menuItem("Dashboard", tabName = "dashboard", icon = icon("dashboard")),
  menuItem("Widgets", tabName = "widgets", icon = icon("th"))
   )
 ),
 dashboardBody(
useShinyjs(),
tabItems(
  # First tab content
  tabItem(tabName = "dashboard",
          fluidRow(
            box(plotOutput("plot1", height = 250)),

            box(
              title = "Controls",
              sliderInput("slider", "Number of observations:", 1, 100, 50)
            )
          )
  ),

  # Second tab content
    tabItem(tabName = "widgets",
          h2("Widgets tab content")
  )
)
)
)

server <- function(input, output) {

 addClass(selector = "body", class = "sidebar-collapse")


 set.seed(122)
 histdata <- rnorm(500)

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

shinyApp(ui, server) 
...