Добавьте внешнюю гиперссылку на tabPanel или navbarMenu в r Shiny - PullRequest
0 голосов
/ 05 мая 2019

Я пытаюсь добавить внешние гиперссылки к вкладкам / раскрывающимся спискам tabPabel и navbarMenu в настройке navbarPage в Shiny (с использованием bootstrapPage). Я обнаружил несколько вопросов, касающихся ссылки на другую вкладку в приложении Shiny, но я хочу специально указать ссылку на другую веб-страницу, не открывая новое окно браузера.

Я нашел следующие вопросы, которые вроде бы туда попали:

Как перейти на другую веб-страницу после нажатия tabPanel в Shiny App

Открыть URL от tabPanel в Shiny

Второй вопрос: что я хочу сделать? однако, когда я использую следующий метод для этого, он добавляет вкладку «фантом»:

tabPanel(a("Open Sales Gsheet", href="http://google.com", target="_blank"))

Вот пример кода для настройки приложения Shiny, с которым я работаю:

library(shiny); library(shinythemes)

ui <- bootstrapPage("", 
                navbarPage(
                  id = "navbar", 
                  theme = shinytheme("yeti"),
                  title = a("Home", href = "https://google.com", style = "color:white;"),  ## page title with hyperlink and browser tab title (works as intended)

                  tabPanel(title = HTML("Panel_1</a></li><li><a href='http://google.com' target='_blank'>test")),  ## tabPanel hyperlink test (adds "phantom" tab)

                  navbarMenu(title = "Test Menu", 
                             tabPanel(title = a("Open Sales Gsheet", href="http://google.com", target="_blank"))   ## navbarMenu hyperlink test (adds "phantom" option)
                             )
                  )
            )

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

  ## empty server

  }

shinyApp(ui, server)

Вот скриншот проблемы с вкладкой «фантом»:

https://i.imgur.com/tIYbhzT.png

Как видите, вкладки / выпадающие списки tabPanel и navbarMenu имеют дополнительные фантомные вкладки, которые были добавлены в результате. Первый вопрос, который я разместил выше, показывает ответ, который включает в себя редактирование HTML-кода (или списка, который создается в R) ... но я не могу понять, как это сделать с объектом tabPanel или navbarMenu.

Я просто хочу, чтобы это выглядело как обычный выпадающий список navbarPage, в котором ссылки выбора tabPanel и navbarMenu ссылаются на внешний сайт (в том же окне браузера - browseURL, так как в сценарии сервера замечено наблюдение за событием, так как оно открывается в другом окно). Любая помощь будет оценена!

1 Ответ

1 голос
/ 07 мая 2019

Сложно добавить пользовательские элементы на блестящей странице панели навигации, но это можно сделать с помощью некоторого JavaScript.Следующий код должен добавить вашу ссылку в выпадающее меню на панели навигации.Сохраните его как файл .js в базовом каталоге вашего приложения, затем включите скрипт в функцию пользовательского интерфейса.

navAppend.js в базовом каталоге вашего приложения:

$(document).ready(function() {
  $(".navbar .container-fluid .navbar-nav .dropdown .dropdown-menu").append('<li><a href="https://google.com" target="_blank">Open Sales Gsheet</a></li>');
});

в вашем ui:

ui <- tagList(
  tags$head(includeScript("navAppend.js")),
  navbarPage(
    id = "navbar", 
    theme = shinytheme("yeti"),
    title = a("Home", href = "https://google.com", style = "color:white;"),  ## page title with hyperlink and browser tab title (works as intended)

    # nav menu the link will be added to
    navbarMenu(title = "Test Menu")
  )
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...