переход к конкретной вкладке из внешней ссылки блестящий - PullRequest
0 голосов
/ 26 апреля 2018

Я пытаюсь предоставить доступ к определенному виду моей блестящей панели мониторинга внешнему приложению.По сути, я хочу дать им URL-ссылку с параметром фильтра, чтобы при щелчке по ссылке моя блестящая панель инструментов открывалась в конкретном представлении с примененными фильтрами.Я сталкивался с некоторыми другими сообщениями о том же самом на SO Внешняя ссылка на конкретную tabPanel в Shiny App

Я пытался использовать код, чтобы найти решение, но не смог.Это то, что у меня сейчас есть, то, что я хотел бы иметь, это что-то вроде http://127.0.0.1:7687/?url=%22Plot%202%22&species=%22setosa%22

. Это должно открыть вкладку «График 2» панели инструментов и применить соответствующие фильтры.Любая помощь в этом была бы отличной.Спасибо!

library(shiny)
library(DT)


# Define UI for application that draws a histogram
ui <- navbarPage(title = "Navigate", id = 'nav',

   # Application title
   tabPanel("Plot",
            plotOutput("distPlot")
            ),
   tabPanel("Plot 2",
            selectInput("species", "Select Species", choices = c("setosa", "virginica"),
                        multiple = T, selected = NULL),
            dataTableOutput("tbl1")
            )
)

# Define server logic required to draw a histogram
server <- function(input, output, session) {

  observe({
    query <- parseQueryString(session$clientData$url_search)
    if(!is.null(query$url)) {
      url <- strsplit(query$url,"/")[[1]]
      updateTabsetPanel(session, 'nav', url)
    }
  })

   output$distPlot <- renderPlot({
      hist(rnorm(100), col = 'darkgray', border = 'white')
   })

   output$tbl1 <- renderDataTable({
     tmp <- iris
     if(!is.null(input$species))
        tmp <- iris[which(iris$Species %in% input$species), ]

     datatable(tmp)
   })
}

# Run the application
shinyApp(ui = ui, server = server)

1 Ответ

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

Ваше наблюдение должно быть следующим:

  observe({
    query <- parseQueryString(session$clientData$url_search)
    if(!is.null(query$url)) {
      url <- strsplit(query$url,"\"")[[1]][2]
      species <- strsplit(query$species, "\"")[[1]][2]
      updateTabsetPanel(session, 'nav', url)
      updateSelectInput(session, 'species',selected = species)
    }
  })
...