r - 如何从闪亮的书签按钮中提取 URL 并创建我自己的可以缩短 URL 的操作按钮?
问题描述
我想知道是否可以提取由 Shiny Bookmark 按钮创建的 URL?我知道书签按钮是一个特殊的操作按钮,它可以创建一个 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)
现在,如果我想保存 is 的Checkbox
状态TRUE
。我可以单击书签按钮并复制 URL(https://yuchenw.shinyapps.io/Bookmark_Example/?输入&chk=true&txt=%22%22)。
之后,我可以使用该urlshorteneR
包来缩短 URL,如下所示。
library(urlshorteneR)
url <- "https://yuchenw.shinyapps.io/Bookmark_Example/?_inputs_&chk=true&txt=%22%22"
isgd_LinksShorten(longUrl = url, showRequestURL = TRUE)
这很好用。如果我可以提取书签 URL 并自动执行此过程,那就太好了。提前感谢您的任何帮助或建议。
解决方案
使用您的示例应该这样做:
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"
推荐阅读
- c# - 在 C# 中传递未知数据类型参数
- java - java ForkJoinPool compute() 方法中的同步
- javascript - Django html模板中的Javascript代码打印
- java - 如果 ServerConnector 已经配置了 AcceptQueueSize,是否需要为 QueuedThreadPool 指定 BlockingQueue?
- python - 即使我在 KEYUP 期间告诉它停止,我的播放器仍会继续下降。游戏
- c# - VisualStudio 中的 CMake 和 Nuget 包
- python-3.x - 使用客户转换器中的智能函数向数据框添加功能
- r - 将 DALEX 解释函数应用于 xgboost 模型以进行 what_if / centerisParibus 分析
- javascript - 在 JavaScript 中,有没有办法在不使用 toLocaleString 的情况下将日期转换为时区?
- python - 如果我在 __exit__ 方法中返回 self,为什么异常会消失?