usar una pagina mac inspeccionar elementos elemento editar como html r hyperlink shiny href

html - pagina - Enlazando a una pestaña o panel de una aplicación brillante



inspeccionar elemento firefox android (4)

¿Cómo logro vincular desde una parte brillante determinada a partes que están ubicadas en otras pestañas / paneles?

Actualizar

La solución que redacté a continuación funciona para el caso explícito de vincular a pestañas / paneles (y eso es lo que pedí).

Sin embargo, me interesaría saber también formas más genéricas de vincular partes de una aplicación brillante.

Ejemplo

Me gustaría vincular desde el panel A al panel B, pero no estoy seguro de qué debo especificar como acción cuando se hace clic en el enlace de acción en el panel A.

El valor #tab-4527-2 proviene de la investigación de la salida HTML de ui , pero acabo de ver que esos valores cambian cada vez que reinicio la aplicación.

library(shiny) # UI --------------------------------------------------------------------- ui <- fluidPage( tabsetPanel( tabPanel( "A", p(), actionLink("link_to_tabpanel_b", "Link to panel B") ), tabPanel( "B", h3("Some information"), tags$li("Item 1"), tags$li("Item 2") ) ) ) # Server ------------------------------------------------------------------ server <- function(input, output, session) { observeEvent(input$link_to_tabpanel_b, { tags$a(href = "#tab-4527-2") }) } shinyApp(ui, server)


La siguiente solución se basa en las entradas que recibí de los comentarios.

Tenga en cuenta que updateTabsetPanel() pertenece a shiny mientras que updateTabItems() es una función del paquete shinydashboard . Parecen funcionar indistintamente.

library(shiny) library(shinydashboard) # UI --------------------------------------------------------------------- ui <- fluidPage( tabsetPanel( id = "panels", tabPanel( "A", p(), actionLink("link_to_tabpanel_b", "Link to panel B") ), tabPanel( "B", h3("Some information"), tags$li("Item 1"), tags$li("Item 2"), actionLink("link_to_tabpanel_a", "Link to panel A") ) ) ) # Server ------------------------------------------------------------------ server <- function(input, output, session) { # observeEvent(input$link_to_tabpanel_b, { # tags$a(href = "#tab-4527-2") # }) observeEvent(input$link_to_tabpanel_b, { newvalue <- "B" updateTabItems(session, "panels", newvalue) }) observeEvent(input$link_to_tabpanel_a, { newvalue <- "A" updateTabsetPanel(session, "panels", newvalue) }) } shinyApp(ui, server)


Esto es realmente útil y lo que quiero. De acuerdo con el código y la lógica de Rappster. Es posible establecer cualquier tipo de enlaces. Enlace a TabsetPanel puede ser utilizado por updataTabsetPanel . El enlace a Navbar puede usar updateNavbarPage(session, inputId, selected = NULL) . Estos pueden ser encontrados por ?updateTabsetPanel siguiente manera.

updateTabsetPanel(session, inputId, selected = NULL) updateNavbarPage(session, inputId, selected = NULL) updateNavlistPanel(session, inputId, selected = NULL)

Tenga en cuenta que selected es la nueva identificación que puede definir para tabsetPanel , Navbar o NavlistPanel .


Acabamos de lanzar una biblioteca de enrutamiento , lo que facilita el enlace en Shiny. Así es como se ve en pocas palabras.

make_router( route("<your_app_url>/main", main_page_shiny_ui), route("<your_app_url>/other", other_page_shiny_ui) )

Se puede encontrar más información en esta publicación de blog .


Puedes darle a tu tabsetPanel una identificación y usar updateTabsetPanel con tu observeEvent

library(shiny) # UI --------------------------------------------------------------------- ui <- fluidPage( tabsetPanel(id = "demo", tabPanel( "A", p(), actionLink("link_to_tabpanel_b", "Link to panel B") ), tabPanel( "B", h3("Some information"), tags$li("Item 1"), tags$li("Item 2") ) ) ) # Server ------------------------------------------------------------------ server <- function(input, output, session) { observeEvent(input$link_to_tabpanel_b, { updateTabsetPanel(session, "demo", "B") }) } shinyApp(ui, server)