блестящий: показать главную панель при нажатии кнопки действия - PullRequest
0 голосов
/ 28 апреля 2018

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

в корпусе панели приборов:

fluidRow(
  column(12, actionButton("analyze", "Fetch Data!", width = "100px"))), 

hidden(    
     mainPanel(  
        hidden( (htmlOutput("artistpic")), // this works fine & shows on button click
        infoBoxOutput("approvalBox"))     
            )),

сервер:

  pic <- eventReactive(input$analyze2, {
      print(get_id_picture()[3])
      url = toString(get_id_picture()[3])
      print(url)
      url 
  })
  output$artistpic <- renderText({c('<img src="',pic(),'"width="17%" height="17%">')})

1 Ответ

0 голосов
/ 29 апреля 2018

Это легко с блестящим .

Просто окружите mainPanel() тегом div(), чтобы вы могли использовать его идентификатор для переключения его видимости, и запустите приложение с тегом div, скрытым с помощью hidden(), как в следующем примере:

# ui.R

fluidPage(
  useShinyjs(),
  actionButton("toggle.main.button", "Toggle Main"),
  div(id = "main",
    mainPanel(
      p("This paragraph is in main."),
      p("This one too!")
    )
  ) %>% shinyjs::hidden()
)

# server.R

library(shinyjs)

function(input, output, session) {

  # Toggling visability of main on button click.
  observeEvent(input$toggle.main.button, {
    shinyjs::toggle("main")
  })

}
...