knitr::opts_chunk$set( collapse = TRUE, comment = "#>" )
The rsc_table()
, rsc_grid()
, rsc_search()
, and rsc_filter()
widgets use
crosstalk
to facilitate inter-widget communication. In simple cases, passing
identical results from the content()
tibble is sufficient:
library(connectwidgets) library(dplyr) library(purrr) library(htmltools) client <- connect() all_content <- client %>% content() some_content <- slice_sample(all_content, prop = .1) tagList( rsc_cols(rsc_search(some_content), rsc_filter(some_content)), rsc_table(some_content) )
For more complicated layouts, you may want to pass your own crosstalk
objects to the components.
As a publisher, you want to:
rsc_grid()
of each content owner's itemscrosstalk::SharedData$new()
takes two optional parameters that make this possible:
keys
The content()
tibble contains a globally unique identifier (GUID) for each piece of content, which you can use as a key when creating your SharedData
object (e.g key = ~ guid
).
group
SharedData
object gives you control over which widgets are
grouped together (e.g. group = "xfilter"
).Since the some_content
tibble contains all the GUIDs, passing it to the Search
and Filter components will enable you to search across each of the subset tibbles
created by dplyr::group_nest
:
some_content_xfilter <- crosstalk::SharedData$new( some_content, key = ~ guid, group = "xfilter" ) rsc_content_shared <- some_content %>% group_nest(owner_username, .key = "content_df", keep = TRUE) div( h3("Grouped Grids by Owner", class = "text-center"), rsc_cols(rsc_search(some_content_xfilter), rsc_filter(some_content_xfilter)), purrr::pmap( rsc_content_shared, { ~ tagList( h4(..1), rsc_grid(crosstalk::SharedData$new(..2, key = ~ guid, group = "xfilter")) ) } ) )
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.