Как открыть боковую панель по умолчанию при использовании тумблера в R - PullRequest
1 голос
/ 23 сентября 2019

Я создал следующее блестящее приложение.Приложение состоит из следующих частей

импорт необходимых библиотек

 library(shiny)
 library(shinyjs)

Далее мы создадим США.Обратите внимание, что мы добавляем опцию переключения боковой панели, используя функцию переключения материала следующим образом

 # Define UI for app that draws a histogram ----
 ui <- fluidPage(  
# App title ----
titlePanel("Hello Shiny!"),
useShinyjs(), navbarPage(materialSwitch(inputId = "toggleSidebar",label = "", 
value = FALSE, status = "success")),
# Sidebar layout with input and output definitions ----
sidebarLayout(div( id ="Sidebar",
# Sidebar panel for inputs ----
sidebarPanel(     
  # Input: Slider for the number of bins ----
  sliderInput(inputId = "bins",
              label = "Number of bins:",
              min = 1,
              max = 50,
              value = 30))),

    # Main panel for displaying outputs ----
   mainPanel( # Output: Histogram ----
  plotOutput(outputId = "distPlot")
   )))

Далее мы создаем сервер следующим образом

  # Define server logic required to draw a histogram ----
 server <- function(input, output) {
   output$distPlot <- renderPlot({
   x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)
    hist(x, breaks = bins, col = "#75AADB", border = "white",
     xlab = "Waiting time to next eruption (in mins)",
     main = "Histogram of waiting times")})



    observeEvent(input$toggleSidebar, {
        shinyjs::toggle(id = "Sidebar")
    })}

Запустим приложение.

 shinyApp(ui, server)

Когда приложение запускается, боковая панель, содержащая ползунок с количеством ячеек, сворачивается, поскольку боковая панель по умолчанию сворачивается.То же самое можно получить, нажав тумблер.

Можно ли по умолчанию открыть боковую панель, а затем свернуть ее при нажатии на тумблер

Спасибо

1 Ответ

1 голос
/ 23 сентября 2019

Вы можете использовать аргумент toggle s condition, чтобы определить, следует ли показывать или скрывать боковую панель:

library(shiny)
library(shinyjs)
library(shinyWidgets)

# Define UI for app that draws a histogram ----
ui <- fluidPage(  
  # App title ----
  titlePanel("Hello Shiny!"),
  useShinyjs(), navbarPage(materialSwitch(inputId = "toggleSidebar",label = "", 
                                          value = TRUE, status = "success")),
  # Sidebar layout with input and output definitions ----
  sidebarLayout(div( id ="Sidebar",
                     # Sidebar panel for inputs ----
                     sidebarPanel(     
                       # Input: Slider for the number of bins ----
                       sliderInput(inputId = "bins",
                                   label = "Number of bins:",
                                   min = 1,
                                   max = 50,
                                   value = 30))),

                # Main panel for displaying outputs ----
                mainPanel( # Output: Histogram ----
                           plotOutput(outputId = "distPlot")
                )))

# Define server logic required to draw a histogram ----
server <- function(input, output) {
  output$distPlot <- renderPlot({
    x    <- faithful$waiting
    bins <- seq(min(x), max(x), length.out = input$bins + 1)
    hist(x, breaks = bins, col = "#75AADB", border = "white",
         xlab = "Waiting time to next eruption (in mins)",
         main = "Histogram of waiting times")})

  observeEvent(input$toggleSidebar, {
    shinyjs::toggle(id = "Sidebar", condition = input$toggleSidebar)
  })
  }

shinyApp(ui, server)
...