Как извлечь URL из кнопки Shiny Bookmark и создать кнопку My Own Action, которая может сократить URL? - PullRequest
1 голос
/ 15 октября 2019

Хотелось бы узнать, можно ли извлечь URL, созданный кнопкой Shiny Bookmark? Я знаю, что кнопка «Закладка» - это кнопка специального действия, которая может создать URL-адрес, документирующий все поля ввода приложения Shiny. В дополнение к поведению по умолчанию я хочу сохранить этот URL-адрес в моем приложении Shiny для других приложений.

Моя конечная цель - выяснить, могу ли я добавить URL-адрес закладки в пакет urlshorteneR для созданиясократить URL-адрес и сообщить пользователям. Когда приложение Shiny содержит много полей ввода, URL-адрес закладки становится длинным. Вот почему я думаю, что было бы удобно иметь возможность автоматически сокращать URL.

Ниже приведен пример. Следующий скрипт является примером из документации enableBookmarking. Я загрузил его на shinyapps.io и создал эту ссылку (https://yuchenw.shinyapps.io/Bookmark_Example/).

# Basic example with state encoded in URL
ui <- function(request) {
  fluidPage(
    textInput("txt", "Text"),
    checkboxInput("chk", "Checkbox"),
    bookmarkButton()
  )
}
server <- function(input, output, session) { }
enableBookmarking("url")
shinyApp(ui, server)

Теперь, если я хочу сохранить состояние, которое Checkbox равно TRUE. Я могу нажать кнопку Закладка ископируйте URL (https://yuchenw.shinyapps.io/Bookmark_Example/?inputs&chk=true&txt=%22%22).

enter image description here

После этого я могу использовать пакет urlshorteneR для сокращения URL следующим образом.

library(urlshorteneR)

url <- "https://yuchenw.shinyapps.io/Bookmark_Example/?_inputs_&chk=true&txt=%22%22"

isgd_LinksShorten(longUrl = url, showRequestURL = TRUE)

Это хорошо работает. Было бы здорово, если бы я смог извлечь URL-адрес закладки и автоматизировать этот процесс. Заранее благодарю за любую помощь или предложения.

1 Ответ

1 голос
/ 15 октября 2019

Используя ваш пример, это должно быть сделано:

library(shiny)
library(urlshorteneR)

# Basic example with state encoded in URL
ui <- function(request) {
  fluidPage(
    textInput("txt", "Text"),
    checkboxInput("chk", "Checkbox"),
    bookmarkButton(),
    htmlOutput("URLs")
  )
}

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

  onBookmarked(function(url) {
    URL(url)
  })

  output$URLs <- renderText({
    paste("Current URL:", URL(), br(), "Shortened URL:", isgd_LinksShorten(longUrl = URL(), showRequestURL = TRUE))})
}

enableBookmarking("url")
# enableBookmarking("server") # alternative

shinyApp(ui, server)

Однако, как уже упоминалось в комментариях, я бы предложил использовать enableBookmarking = "server"

...