Skip to content

Commit 4eefa0d

Browse files
committed
Merge pull request plotly#40 from plotly/deselect
Clear the selectedData if the selection box was cleared
1 parent c406b3a commit 4eefa0d

File tree

4 files changed

+31
-10
lines changed

4 files changed

+31
-10
lines changed

packages/dash-core-components/CHANGELOG.md

+5
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,11 @@
22
All notable changes to this project will be documented in this file.
33
This project adheres to [Semantic Versioning](http://semver.org/).
44

5+
## [0.7.1] - 2017-07-24
6+
### Fixed
7+
- Clearing a Graph selection box sets the `selectedData` value to `None` (`null` in JavaScript). Before, it didn't change the `selectedData` property, preventing the user and the Dash developer from clearing selections. Fixes https://github.com/plotly/dash/issues/97, thanks to @pmbaumgartner for reporting.
8+
9+
510
## [0.7.0] - 2017-07-20
611
### Added
712
- The `clearable` property to the `Dropdown`, which toggles on and off the "x" on the side of the dropdown that clears the current selection.
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
__version__ = '0.7.0'
1+
__version__ = '0.7.1'

packages/dash-core-components/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "dash-core-components",
3-
"version": "0.7.0",
3+
"version": "0.7.1",
44
"description": "Core component suite for Dash",
55
"repository": {
66
"type": "git",

packages/dash-core-components/src/components/Graph.react.js

+24-8
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,16 @@
11
import React, {Component, PropTypes} from 'react';
2-
import {contains, filter, has, type} from 'ramda';
2+
import {contains, filter, has, isNil, type} from 'ramda';
33
/* global Plotly:true */
44

55
const filterEventData = (gd, eventData, event) => {
66
let filteredEventData;
77
if (contains(event, ['click', 'hover', 'selected'])) {
88
const points = [];
99

10+
if (isNil(eventData)) {
11+
return null;
12+
}
13+
1014
/*
1115
* remove `data`, `layout`, `xaxis`, etc
1216
* objects from the event data since they're so big
@@ -80,23 +84,35 @@ export default class PlotlyGraph extends Component {
8084

8185
gd.on('plotly_click', (eventData) => {
8286
const clickData = filterEventData(gd, eventData, 'click');
83-
if (setProps) setProps({clickData});
84-
if (fireEvent) fireEvent({event: 'click'});
87+
if (!isNil(clickData)) {
88+
if (setProps) setProps({clickData});
89+
if (fireEvent) fireEvent({event: 'click'});
90+
}
8591
});
8692
gd.on('plotly_hover', (eventData) => {
8793
const hoverData = filterEventData(gd, eventData, 'hover');
88-
if (setProps) setProps({hoverData});
89-
if (fireEvent) fireEvent({event: 'hover'})
94+
if (!isNil(hoverData)) {
95+
if (setProps) setProps({hoverData});
96+
if (fireEvent) fireEvent({event: 'hover'})
97+
}
9098
});
9199
gd.on('plotly_selected', (eventData) => {
92100
const selectedData = filterEventData(gd, eventData, 'selected');
93-
if (setProps) setProps({selectedData});
101+
if (!isNil(selectedData)) {
102+
if (setProps) setProps({selectedData});
103+
if (fireEvent) fireEvent({event: 'selected'});
104+
}
105+
});
106+
gd.on('plotly_deselect', () => {
107+
if (setProps) setProps({selectedData: null});
94108
if (fireEvent) fireEvent({event: 'selected'});
95109
});
96110
gd.on('plotly_relayout', (eventData) => {
97111
const relayoutData = filterEventData(gd, eventData, 'relayout');
98-
if (setProps) setProps({relayoutData});
99-
if (fireEvent) fireEvent({event: 'relayout'});
112+
if (!isNil(relayoutData)) {
113+
if (setProps) setProps({relayoutData});
114+
if (fireEvent) fireEvent({event: 'relayout'});
115+
}
100116
});
101117
gd.on('plotly_unhover', () => {
102118
if (clear_on_unhover) {

0 commit comments

Comments
 (0)