@@ -27,41 +27,30 @@ export class Scatter extends Component {
27
27
// Grab container SVG
28
28
const svg = this . getContainerSVG ( ) ;
29
29
30
- const groupedData = this . model . getGroupedData ( ) ;
30
+ const options = this . model . getOptions ( ) ;
31
+ const { groupMapsTo } = options . data ;
32
+
33
+ const domainIdentifier = this . services . cartesianScales . getDomainIdentifier ( ) ;
34
+ const rangeIdentifier = this . services . cartesianScales . getRangeIdentifier ( ) ;
35
+ const scatterData = this . model . getDisplayData ( ) . filter ( d => d [ rangeIdentifier ] !== undefined && d [ rangeIdentifier ] !== null ) ;
31
36
32
37
// Update data on dot groups
33
- const dotGroups = svg
34
- . selectAll ( "g.dots " )
35
- . data ( groupedData , ( group ) => group . name ) ;
38
+ const circles = svg
39
+ . selectAll ( "circle.dot " )
40
+ . data ( scatterData , ( datum ) => ` ${ datum [ groupMapsTo ] } - ${ datum [ domainIdentifier ] } ` ) ;
36
41
37
- // Remove dot groups that need to be removed
38
- dotGroups . exit ( ) . attr ( "opacity" , 0 ) . remove ( ) ;
42
+ // Remove circles that need to be removed
43
+ circles . exit ( ) . attr ( "opacity" , 0 ) . remove ( ) ;
39
44
40
45
// Add the dot groups that need to be introduced
41
- const dotGroupsEnter = dotGroups
46
+ const enteringCircles = circles
42
47
. enter ( )
43
- . append ( "g" )
44
- . classed ( "dots" , true )
45
- . attr ( "role" , Roles . GROUP ) ;
46
-
47
- const rangeIdentifier = this . services . cartesianScales . getRangeIdentifier ( ) ;
48
- // Update data on all circles
49
- const dots = dotGroupsEnter
50
- . merge ( dotGroups )
51
- . selectAll ( "circle.dot" )
52
- . data ( ( group ) =>
53
- group . data . filter (
54
- ( datum ) =>
55
- datum [ rangeIdentifier ] !== null &&
56
- datum [ rangeIdentifier ] !== undefined
57
- )
58
- ) ;
59
-
60
- // Add the circles that need to be introduced
61
- const dotsEnter = dots . enter ( ) . append ( "circle" ) . attr ( "opacity" , 0 ) ;
48
+ . append ( "circle" )
49
+ . classed ( "dot" , true )
50
+ . attr ( "opacity" , 0 ) ;
62
51
63
52
// Apply styling & position
64
- const circlesToStyle = dotsEnter . merge ( dots ) ;
53
+ const circlesToStyle = enteringCircles . merge ( circles ) ;
65
54
this . styleCircles ( circlesToStyle , animate ) ;
66
55
67
56
// Add event listeners to elements drawn
@@ -165,10 +154,10 @@ export class Scatter extends Component {
165
154
filled
166
155
)
167
156
)
168
- . attr ( "cx" , getXValue )
169
157
. transition (
170
158
transitions . getTransition ( "scatter-update-enter" , animate )
171
159
)
160
+ . attr ( "cx" , getXValue )
172
161
. attr ( "cy" , getYValue )
173
162
. attr ( "r" , options . points . radius )
174
163
. attr ( "fill" , ( d ) => {
0 commit comments