@@ -3,11 +3,12 @@ var Lib = require('@src/lib');
3
3
4
4
var RangeSlider = require ( '@src/components/rangeslider' ) ;
5
5
var constants = require ( '@src/components/rangeslider/constants' ) ;
6
+ var mock = require ( '../../image/mocks/range_slider.json' ) ;
6
7
7
8
var createGraphDiv = require ( '../assets/create_graph_div' ) ;
8
9
var destroyGraphDiv = require ( '../assets/destroy_graph_div' ) ;
9
- var mock = require ( '../../image/mocks/range_slider.json' ) ;
10
10
var mouseEvent = require ( '../assets/mouse_event' ) ;
11
+ var customMatchers = require ( '../assets/custom_matchers' ) ;
11
12
12
13
13
14
describe ( 'the range slider' , function ( ) {
@@ -23,9 +24,18 @@ describe('the range slider', function() {
23
24
return document . getElementsByClassName ( className ) [ 0 ] ;
24
25
}
25
26
27
+ function testTranslate1D ( node , val ) {
28
+ var transformParts = node . getAttribute ( 'transform' ) . split ( '(' ) ;
29
+ expect ( transformParts [ 0 ] ) . toEqual ( 'translate' ) ;
30
+ expect ( + transformParts [ 1 ] . split ( ',0)' ) [ 0 ] ) . toBeCloseTo ( val , 0 ) ;
31
+ }
26
32
27
33
describe ( 'when specified as visible' , function ( ) {
28
34
35
+ beforeAll ( function ( ) {
36
+ jasmine . addMatchers ( customMatchers ) ;
37
+ } ) ;
38
+
29
39
beforeEach ( function ( done ) {
30
40
gd = createGraphDiv ( ) ;
31
41
@@ -67,73 +77,73 @@ describe('the range slider', function() {
67
77
it ( 'should react to resizing the minimum handle' , function ( done ) {
68
78
var start = 85 ,
69
79
end = 140 ,
70
- dataMinStart = rangeSlider . getAttribute ( 'data-min' ) ,
71
80
diff = end - start ;
72
81
82
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 49 ] ) ;
83
+
73
84
slide ( start , sliderY , end , sliderY ) . then ( function ( ) {
74
85
var maskMin = children [ 2 ] ,
75
86
handleMin = children [ 5 ] ;
76
87
77
- expect ( rangeSlider . getAttribute ( 'data-min' ) ) . toEqual ( String ( + dataMinStart + diff ) ) ;
88
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 4.35 , 49 ] ) ;
78
89
expect ( maskMin . getAttribute ( 'width' ) ) . toEqual ( String ( diff ) ) ;
79
90
expect ( handleMin . getAttribute ( 'transform' ) ) . toBe ( 'translate(' + ( diff - 3 ) + ',0)' ) ;
80
91
} ) . then ( done ) ;
81
92
} ) ;
82
93
83
- function testTranslate1D ( node , val ) {
84
- var transformParts = node . getAttribute ( 'transform' ) . split ( '(' ) ;
85
- expect ( transformParts [ 0 ] ) . toEqual ( 'translate' ) ;
86
- expect ( + transformParts [ 1 ] . split ( ',0)' ) [ 0 ] ) . toBeCloseTo ( val , 0 ) ;
87
- }
88
-
89
94
it ( 'should react to resizing the maximum handle' , function ( done ) {
90
95
var start = 695 ,
91
96
end = 490 ,
92
- dataMaxStart = rangeSlider . getAttribute ( 'data-max' ) ,
97
+ dataMaxStart = gd . _fullLayout . xaxis . rangeslider . d2p ( 49 ) ,
93
98
diff = end - start ;
94
99
100
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 49 ] ) ;
101
+
95
102
slide ( start , sliderY , end , sliderY ) . then ( function ( ) {
96
103
var maskMax = children [ 3 ] ,
97
104
handleMax = children [ 6 ] ;
98
105
99
- expect ( + rangeSlider . getAttribute ( 'data-max' ) ) . toBeCloseTo ( + dataMaxStart + diff , 0 ) ;
106
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 32.77 ] ) ;
100
107
expect ( + maskMax . getAttribute ( 'width' ) ) . toBeCloseTo ( - diff ) ;
101
- testTranslate1D ( handleMax , + dataMaxStart + diff ) ;
108
+
109
+ testTranslate1D ( handleMax , dataMaxStart + diff ) ;
102
110
} ) . then ( done ) ;
103
111
} ) ;
104
112
105
113
it ( 'should react to moving the slidebox left to right' , function ( done ) {
106
114
var start = 250 ,
107
115
end = 300 ,
108
- dataMinStart = rangeSlider . getAttribute ( 'data-min' ) ,
116
+ dataMinStart = gd . _fullLayout . xaxis . rangeslider . d2p ( 0 ) ,
109
117
diff = end - start ;
110
118
119
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 49 ] ) ;
120
+
111
121
slide ( start , sliderY , end , sliderY ) . then ( function ( ) {
112
122
var maskMin = children [ 2 ] ,
113
123
handleMin = children [ 5 ] ;
114
124
115
- expect ( + rangeSlider . getAttribute ( 'data-min' ) ) . toBeCloseTo ( String ( + dataMinStart + diff ) ) ;
125
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 3.96 , 49 ] ) ;
116
126
expect ( + maskMin . getAttribute ( 'width' ) ) . toBeCloseTo ( String ( diff ) ) ;
117
- testTranslate1D ( handleMin , + dataMinStart + diff - 3 ) ;
127
+ testTranslate1D ( handleMin , dataMinStart + diff - 3 ) ;
118
128
} ) . then ( done ) ;
119
129
} ) ;
120
130
121
131
it ( 'should react to moving the slidebox right to left' , function ( done ) {
122
132
var start = 300 ,
123
133
end = 250 ,
124
- dataMaxStart = rangeSlider . getAttribute ( 'data-max' ) ,
134
+ dataMaxStart = gd . _fullLayout . xaxis . rangeslider . d2p ( 49 ) ,
125
135
diff = end - start ;
126
136
137
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 49 ] ) ;
138
+
127
139
slide ( start , sliderY , end , sliderY ) . then ( function ( ) {
128
140
var maskMax = children [ 3 ] ,
129
141
handleMax = children [ 6 ] ;
130
142
131
- expect ( + rangeSlider . getAttribute ( 'data-max' ) ) . toBeCloseTo ( + dataMaxStart + diff ) ;
143
+ expect ( gd . layout . xaxis . range ) . toBeCloseToArray ( [ 0 , 45.04 ] ) ;
132
144
expect ( + maskMax . getAttribute ( 'width' ) ) . toBeCloseTo ( - diff ) ;
133
- testTranslate1D ( handleMax , + dataMaxStart + diff ) ;
145
+ testTranslate1D ( handleMax , dataMaxStart + diff ) ;
134
146
} ) . then ( done ) ;
135
-
136
-
137
147
} ) ;
138
148
139
149
it ( 'should resize the main plot when rangeslider has moved' , function ( done ) {
@@ -158,22 +168,35 @@ describe('the range slider', function() {
158
168
} ) ;
159
169
160
170
it ( 'should relayout with relayout "array syntax"' , function ( done ) {
161
- Plotly . relayout ( gd , 'xaxis.range' , [ 10 , 20 ] )
162
- . then ( function ( ) {
163
- expect ( gd . _fullLayout . xaxis . range ) . toEqual ( [ 10 , 20 ] ) ;
164
- expect ( + rangeSlider . getAttribute ( 'data-min' ) ) . toBeCloseTo ( 124.69 , - 1 ) ;
165
- expect ( + rangeSlider . getAttribute ( 'data-max' ) ) . toBeCloseTo ( 249.39 , - 1 ) ;
166
- } )
167
- . then ( done ) ;
171
+ Plotly . relayout ( gd , 'xaxis.range' , [ 10 , 20 ] ) . then ( function ( ) {
172
+ var maskMin = children [ 2 ] ,
173
+ maskMax = children [ 3 ] ,
174
+ handleMin = children [ 5 ] ,
175
+ handleMax = children [ 6 ] ;
176
+
177
+ expect ( + maskMin . getAttribute ( 'width' ) ) . toBeCloseTo ( 126.32 , 0 ) ;
178
+ expect ( + maskMax . getAttribute ( 'width' ) ) . toBeCloseTo ( 366.34 , 0 ) ;
179
+ testTranslate1D ( handleMin , 123.32 ) ;
180
+ testTranslate1D ( handleMax , 252.65 ) ;
181
+ } )
182
+ . then ( done ) ;
168
183
} ) ;
169
184
170
185
it ( 'should relayout with relayout "element syntax"' , function ( done ) {
171
- Plotly . relayout ( gd , 'xaxis.range[0]' , 10 )
172
- . then ( function ( ) {
173
- expect ( gd . _fullLayout . xaxis . range [ 0 ] ) . toEqual ( 10 ) ;
174
- expect ( + rangeSlider . getAttribute ( 'data-min' ) ) . toBeCloseTo ( 124.69 , - 1 ) ;
175
- } )
176
- . then ( done ) ;
186
+ Plotly . relayout ( gd , 'xaxis.range[0]' , 10 ) . then ( function ( ) {
187
+ var maskMin = children [ 2 ] ,
188
+ maskMax = children [ 3 ] ,
189
+ handleMin = children [ 5 ] ,
190
+ handleMax = children [ 6 ] ;
191
+
192
+ expect ( + maskMin . getAttribute ( 'width' ) ) . toBeCloseTo ( 126.32 , 0 ) ;
193
+ expect ( + maskMax . getAttribute ( 'width' ) ) . toBeCloseTo ( 0 ) ;
194
+ testTranslate1D ( handleMin , 123.32 ) ;
195
+ testTranslate1D ( handleMax , 619 ) ;
196
+ } )
197
+ . then ( done ) ;
198
+ } ) ;
199
+
177
200
} ) ;
178
201
} ) ;
179
202
0 commit comments