我正在寻找一种方法,将闪亮的书签功能与闪亮的 DT 包和搜索生成器扩展一起使用。这个想法是能够为用户设置的自定义搜索构建器参数(以及应用程序中需要的其他内容)添加书签,这样他们就不必在每次加载应用程序时不断输入。
谢谢,
亚伦
我认为闪亮的书签功能不可能做到这一点。但这里有一种方法,可以通过单击按钮将搜索查询保存到 JSON 文件,然后可以上传此文件以重建查询。
library(shiny)
library(DT)
js <- c(
"$('#save').on('click', function() {",
" var query = table.searchBuilder.getDetails();",
" var json = JSON.stringify(query, null, '\t');",
" var a = document.createElement('a');",
" var file = new Blob([json], {type: 'text/plain'});",
" a.href = URL.createObjectURL(file);",
" a.download = 'query.json';",
" a.click();",
"});",
"$('#upload').on('change', function(e) {",
" var reader = new FileReader();",
" reader.onload = function(event) {;",
" var query = JSON.parse(event.target.result);",
" table.searchBuilder.rebuild(query);",
" }",
" reader.readAsText(e.target.files[0]);",
"});"
)
ui <- fluidPage(
br(),
actionButton("save", "Save query", class = "btn-primary"),
br(),
tags$label(`for` = "upload", "Upload query"),
tags$input(
id = "upload", type = "file", accept = "application/json"
),
br(),
DTOutput("dtable")
)
server <- function(input, output, session) {
output$dtable <- renderDT({
datatable(
iris,
extensions = c("SearchBuilder", "DateTime"),
options = list(
dom = "Qlfrtip",
searchBuilder = TRUE
),
callback = JS(js)
)
}, server = FALSE)
}
shinyApp(ui, server)