2017-01-27 7 views
0

親愛なるRシャイニーコミュニティ、光沢のあるDTブックマーク状態

私はDTパッケージにテーブルをレンダリングする場所シャイニーアプリをブックマーク状態を作成しようとしています。たとえば、下に貼り付けたアプリでは、データをサブセット化してその状態をブックマークする、つまり共有できるURLを取得するテキストを検索フィールドに入力します。別のユーザーは、URLを使用して、検索フィールドにテキストを再度入力する必要なく、テーブルの同じサブセットを表示できます。下のコードでは、オプション1のコードで「ブックマーク」ボタンを表示したり、オプション2で動的URLを表示したりすることを期待していましたが、残念ながら期待通りに機能しません。誰かがDTでテーブルをレンダリングするときにブックマーク状態を作る方法を知っていますか?ここで

は再現コードです:

オプション1

library(shiny) 

ui <- function(request) { 
    fluidPage(DT::dataTableOutput('tbl')) 
} 

server = function(input, output) { 
    output$tbl = DT::renderDataTable(
     iris, options = list(lengthChange = FALSE) 
    ) 
} 

shinyApp(ui, server, enableBookmarking = "url") 

オプション2

library(shiny) 

ui <- function(request) { 
    fluidPage(DT::dataTableOutput('tbl')) 
} 

server = function(input, output) { 
    observe({ 
    output$tbl = DT::renderDataTable(
     iris, options = list(lengthChange = FALSE) 
    ) 
    }) 
    onBookmarked(function(url) { 
     updateQueryString(url) 
    }) 

} 

shinyApp(ui, server, enableBookmarking = "url") 

はあなたの時間と助けをありがとうございました!

答えて

0

https://groups.google.com/forum/#!topic/shiny-discuss/DvWhqwZ8OKw私は答えを見つけることができました。

私はオプション1を変更できました。ここでは動作する最小の再現可能なアプリです。グローバル検索フィールドに文字列を入力し、下部のブックマークボタンをクリックし、URLと共有をコピーします。

library(DT) 
library(shiny) 

ui <- function(request) { 
fluidPage(
DT::dataTableOutput('tbl') 
, bookmarkButton(label = "Bookmark", title = "Link to this view") 

) 
} 

server = function(input, output) { 

# exclude some values query variables from url 
setBookmarkExclude(names = c("resTable_rows_all", 
"resTable_cell_clicked")) 

# proxy for table manipulations 
tbl_proxy <- dataTableProxy("tbl") 

# restore table selection and search 
onRestored(function(state) { 

# req(state$input$resTable_search) 
DT::updateSearch(tbl_proxy, 
keywords = list(global = state$input$tbl_search)) 
}) 

output$tbl <- renderDataTable(iris) 

} 

shinyApp(ui, server, enableBookmarking = "url") 
関連する問題