4
4
*/
5
5
6
6
class Fader {
7
- constructor ( faderElement ) {
7
+ constructor ( faderElement )
8
+ {
8
9
var valueElement = document . createElement ( "div" ) ;
9
10
valueElement . setAttribute ( "class" , "value" ) ;
10
11
@@ -21,6 +22,15 @@ class Fader {
21
22
22
23
this . peekElement = document . createElement ( "button" ) ;
23
24
this . peekElement . setAttribute ( "class" , "peek btn" ) ;
25
+ this . peekElement . innerHTML = "<i class='bi-eye'></i>" ;
26
+
27
+ this . upElement = document . createElement ( "button" ) ;
28
+ this . upElement . setAttribute ( "class" , "up btn" ) ;
29
+ this . upElement . innerHTML = "<i class='bi-arrow-up'></i>" ;
30
+
31
+ this . downElement = document . createElement ( "button" ) ;
32
+ this . downElement . setAttribute ( "class" , "down btn" ) ;
33
+ this . downElement . innerHTML = "<i class='bi-arrow-down'></i>" ;
24
34
25
35
var labelElement = document . createElement ( "div" ) ;
26
36
labelElement . setAttribute ( "class" , "label" ) ;
@@ -38,6 +48,8 @@ class Fader {
38
48
39
49
this . faderElement . appendChild ( valueElement ) ;
40
50
this . faderElement . appendChild ( bodyElement ) ;
51
+ this . faderElement . appendChild ( this . upElement ) ;
52
+ this . faderElement . appendChild ( this . downElement ) ;
41
53
this . faderElement . appendChild ( this . peekElement ) ;
42
54
this . faderElement . appendChild ( labelElement ) ;
43
55
@@ -61,6 +73,8 @@ class Fader {
61
73
this . onMouseUp = this . handleMouseUp . bind ( this ) ;
62
74
this . onPeekDown = this . handlePeekDown . bind ( this ) ;
63
75
this . onPeekUp = this . handlePeekUp . bind ( this ) ;
76
+ this . onUpClicked = this . handleUpClicked . bind ( this ) ;
77
+ this . onDownClicked = this . handleDownClicked . bind ( this ) ;
64
78
65
79
//Apply initial value
66
80
this . faderHeight = this . faderBody . offsetHeight ;
@@ -72,7 +86,11 @@ class Fader {
72
86
this . unlock ( ) ;
73
87
}
74
88
75
- handlePeekDown ( e ) {
89
+ /**
90
+ * @brief The "Peek" button was pressed
91
+ */
92
+ handlePeekDown ( e )
93
+ {
76
94
this . oldValue = this . value ;
77
95
let percent = this . valueToPercent ( this . max ) ;
78
96
this . setValuePercent ( percent ) ;
@@ -81,15 +99,39 @@ class Fader {
81
99
document . addEventListener ( 'touchend' , this . onPeekUp ) ;
82
100
}
83
101
84
- handlePeekUp ( e ) {
102
+ /**
103
+ * @brief The "Peek" button was released
104
+ */
105
+ handlePeekUp ( e )
106
+ {
85
107
let percent = this . valueToPercent ( this . oldValue ) ;
86
108
this . setValuePercent ( percent ) ;
87
109
88
110
document . removeEventListener ( 'mouseup' , this . onPeekUp ) ;
89
111
document . removeEventListener ( 'touchend' , this . onPeekUp ) ;
90
112
}
113
+
114
+ /**
115
+ * @brief The "Up" button was clicked
116
+ */
117
+ handleUpClicked ( e )
118
+ {
119
+ this . setValuePercent ( 1 ) ;
120
+ }
121
+
122
+ /**
123
+ * @brief The "Down" button was clicked
124
+ */
125
+ handleDownClicked ( e )
126
+ {
127
+ this . setValuePercent ( 0 ) ;
128
+ }
91
129
92
- handleMouseDown ( e ) {
130
+ /**
131
+ * @brief The fader was pressed
132
+ */
133
+ handleMouseDown ( e )
134
+ {
93
135
e . preventDefault ( ) ;
94
136
95
137
let startY = 0 ;
@@ -116,6 +158,9 @@ class Fader {
116
158
document . addEventListener ( 'touchend' , this . onMouseUp ) ;
117
159
}
118
160
161
+ /**
162
+ * @brief The fader was dragged
163
+ */
119
164
handleMouseMove ( e ) {
120
165
let y = 0 ;
121
166
if ( e . type == "mousemove" )
@@ -143,6 +188,9 @@ class Fader {
143
188
this . setValuePercent ( percent ) ;
144
189
}
145
190
191
+ /**
192
+ * @brief The fader was released
193
+ */
146
194
handleMouseUp ( ) {
147
195
this . offsetY = null ;
148
196
@@ -209,24 +257,42 @@ class Fader {
209
257
this . faderFader . start ( ) ;
210
258
}
211
259
260
+ /**
261
+ * @brief Lock the fader so that it cannot be moved by the user
262
+ *
263
+ * The fader is "locked" by disabling the user input events.
264
+ */
212
265
lock ( )
213
266
{
214
267
this . handle . removeEventListener ( 'mousedown' , this . onMouseDown ) ;
215
268
this . handle . removeEventListener ( 'touchstart' , this . onMouseDown ) ;
216
269
this . peekElement . removeEventListener ( 'mousedown' , this . onPeekDown ) ;
217
270
this . peekElement . removeEventListener ( 'touchstart' , this . onPeekDown ) ;
218
- //this.peekElement.removeEventListener('mouseup', this.onPeekUp);
219
- //this.peekElement.removeEventListener('touchend', this.onPeekUp);
271
+ this . upElement . removeEventListener ( 'click' , this . onUpClicked ) ;
272
+ this . downElement . removeEventListener ( 'click' , this . onDownClicked ) ;
273
+
274
+ //Hide
275
+ this . peekElement . style . display = "none" ;
276
+ this . upElement . style . display = "none" ;
277
+ this . downElement . style . display = "none" ;
220
278
}
221
279
280
+ /**
281
+ * @brief Unlcok the fader so that it can be moved by the user
282
+ */
222
283
unlock ( )
223
284
{
224
285
this . handle . addEventListener ( 'mousedown' , this . onMouseDown ) ;
225
286
this . handle . addEventListener ( 'touchstart' , this . onMouseDown ) ;
226
287
this . peekElement . addEventListener ( 'mousedown' , this . onPeekDown ) ;
227
288
this . peekElement . addEventListener ( 'touchstart' , this . onPeekDown ) ;
228
- //this.peekElement.addEventListener('mouseup', this.onPeekUp);
229
- //this.peekElement.addEventListener('touchend', this.onPeekUp);
289
+ this . upElement . addEventListener ( 'click' , this . onUpClicked ) ;
290
+ this . downElement . addEventListener ( 'click' , this . onDownClicked ) ;
291
+
292
+ //Show
293
+ this . peekElement . style . display = "" ;
294
+ this . upElement . style . display = "" ;
295
+ this . downElement . style . display = "" ;
230
296
}
231
297
232
298
setLocked ( locked )
0 commit comments