plotly.R icon indicating copy to clipboard operation
plotly.R copied to clipboard

fix error on clearing crosstalk selection

Open casperhart opened this issue 2 years ago • 2 comments

When linking plots using {crosstalk}, running selectionHandle.clear() from another (non-plotly) visual causes the following error to appear in the console and the selection in the plotly visual is not cleared: image

This is because selectionHandle.clear() event passes an undefined value, which plotly isn't dealing with properly.

This PR fixes this issue.

casperhart avatar Jan 09 '22 03:01 casperhart

Thanks, can you please provide an example that demonstrates the fix?

cpsievert avatar Apr 24 '22 15:04 cpsievert

@cpsievert to reproduce, run the following in R:

library(crosstalk)
library(plotly)
library(DT)

data(iris)

shared_iris <- SharedData$new(iris)

a <- plot_ly(shared_iris, x = ~Sepal.Length, y = ~Sepal.Width) %>%
    add_markers() %>%
    highlight(on = "plotly_click", dynamic = TRUE)
b <- datatable(shared_iris)

bscols(
    list(
        filter_checkbox("species", "Species", shared_iris, ~Species)
    ),
    a, b 
)

Then select some points in the plotly visual, open up the browser console and run the following:

const handleId = Object.keys(__crosstalk_groups)[1]
const myHandle = new crosstalk.SelectionHandle(handleId)
myHandle.clear()

In the main branch code, this throws an error and the selection is not cleared. Using the version in this PR, no error is thrown and the crosstalk selection is successfully cleared.

casperhart avatar Apr 24 '22 20:04 casperhart