блестящий - автоматически переходить на новую добавленную вкладку - PullRequest
0 голосов
/ 24 января 2019

Я изо всех сил пытаюсь заставить мое приложение автоматически переходить на новую добавленную вкладку после ее создания после нажатия на один из маркеров.

library(shiny)
library(leaflet)
library(shinydashboard)


pts <- data.frame(
  id= letters[seq( from = 1, to = 10 )],
  x = rnorm(10, mean = -93.625), 
  y = rnorm(10, mean = 42.0285)
)


# Define UI 
ui <- fluidPage(

  tabsetPanel(id='my_tabsetPanel',
              tabPanel('Map1',
                       leafletOutput('map1')   
              )
  )
)

server <- function(input, output, session) {

  output$map1 <- renderLeaflet({
    leaflet() %>% 
      addTiles() %>% 
      setView(-93.65, 42.0285, zoom = 6)
  })


  observe({

    input$my_tabsetPanel

    tab1 <- leafletProxy('map1', data = pts) %>%
      clearMarkers() %>% 
      addCircleMarkers(lng = ~x, lat = ~y, radius = 4, layerId = ~id)


  })


observeEvent(input$map1_marker_click, { 
  tab_title <- input$map1_marker_click[1]
  appendTab(inputId = "my_tabsetPanel",
            tabPanel(
              tab_title,
              fluidRow(

                box('test')
                )))

  updateTabsetPanel(session, "my_tabsetPanel", selected = tab_title)

})

}


shinyApp(ui = ui, server = server)

Я хочу, чтобы приложение автоматически переходило на новую вкладку, но почему-то я не использую updateTabsetPanel right

Кредит для примера кода, который частично украден из ссылка

1 Ответ

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

Проблема была в том, как установлен ваш tab_id. должно быть, произошло какое-то столкновение.

library(shiny)
library(leaflet)
library(shinydashboard)

pts <- data.frame(
  id= letters[seq( from = 1, to = 10 )],
  x = rnorm(10, mean = -93.625), 
  y = rnorm(10, mean = 42.0285)
)


# Define UI 
ui <- fluidPage(

  tabsetPanel(id='my_tabsetPanel',
              tabPanel('Map1',
                       leafletOutput('map1')   
              )
  )
)

server <- function(input, output, session) {

  output$map1 <- renderLeaflet({
    leaflet() %>% 
      addTiles() %>% 
      setView(-93.65, 42.0285, zoom = 6)
  })


  observe({

    input$my_tabsetPanel

    tab1 <- leafletProxy('map1', data = pts) %>%
      clearMarkers() %>% 
      addCircleMarkers(lng = ~x, lat = ~y, radius = 4, layerId = ~id)


  })


observeEvent(input$map1_marker_click, { 
  tab_title <- input$map1_marker_click[1]
  appendTab(inputId = "my_tabsetPanel",
            tabPanel(
              tab_title, #paste0("tab_",tab_title),
              value = paste0("tab_",tab_title),
              fluidRow(

                box('test')

                #tags$b("some text")
                )))

  updateTabsetPanel(session, "my_tabsetPanel", selected = paste0("tab_",tab_title)) 

})

}


shinyApp(ui = ui, server = server)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...