nouislider-rails 7.0.1 → 7.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -13
- data/lib/nouislider/rails/version.rb +1 -1
- data/vendor/assets/javascripts/jquery.nouislider.js +1 -4
- data/vendor/assets/javascripts/libLink/jquery.liblink.js +1 -1
- data/vendor/assets/javascripts/nouislider/jquery.nouislider.js +1626 -0
- data/vendor/assets/javascripts/wnumb/wNumb.js +6 -6
- data/vendor/assets/stylesheets/jquery.nouislider.css +0 -1
- data/vendor/assets/stylesheets/nouislider/jquery.nouislider.css +180 -80
- metadata +4 -8
- data/vendor/assets/javascripts/nouislider/module.base.js +0 -872
- data/vendor/assets/javascripts/nouislider/module.options.js +0 -269
- data/vendor/assets/javascripts/nouislider/module.range.js +0 -290
- data/vendor/assets/javascripts/nouislider/optional.pips.js +0 -234
- data/vendor/assets/stylesheets/nouislider/jquery.nouislider.pips.css +0 -98
@@ -1,234 +0,0 @@
|
|
1
|
-
/*jslint browser: true */
|
2
|
-
/*jslint white: true */
|
3
|
-
|
4
|
-
(function( $ ){
|
5
|
-
|
6
|
-
'use strict';
|
7
|
-
|
8
|
-
// Removes duplicates from an array.
|
9
|
-
function unique(array) {
|
10
|
-
return $.grep(array, function(el, index) {
|
11
|
-
return index === $.inArray(el, array);
|
12
|
-
});
|
13
|
-
}
|
14
|
-
|
15
|
-
// Pips
|
16
|
-
|
17
|
-
function getGroup ( $Spectrum, mode, values, stepped ) {
|
18
|
-
|
19
|
-
// Use the range.
|
20
|
-
if ( mode === 'range' || mode === 'steps' ) {
|
21
|
-
return $Spectrum.xVal;
|
22
|
-
}
|
23
|
-
|
24
|
-
if ( mode === 'count' ) {
|
25
|
-
|
26
|
-
// Divide 0 - 100 in 'count' parts.
|
27
|
-
var spread = ( 100 / (values-1) ), v, i = 0;
|
28
|
-
values = [];
|
29
|
-
|
30
|
-
// List these parts and have them handled as 'positions'.
|
31
|
-
while ((v=i++*spread) <= 100 ) {
|
32
|
-
values.push(v);
|
33
|
-
}
|
34
|
-
|
35
|
-
mode = 'positions';
|
36
|
-
}
|
37
|
-
|
38
|
-
if ( mode === 'positions' ) {
|
39
|
-
|
40
|
-
// Map all percentages to on-range values.
|
41
|
-
return $.map(values, function( value ){
|
42
|
-
return $Spectrum.fromStepping( stepped ? $Spectrum.getStep( value ) : value );
|
43
|
-
});
|
44
|
-
}
|
45
|
-
|
46
|
-
if ( mode === 'values' ) {
|
47
|
-
|
48
|
-
// If the value must be stepped, it needs to be converted to a percentage first.
|
49
|
-
if ( stepped ) {
|
50
|
-
|
51
|
-
return $.map(values, function( value ){
|
52
|
-
|
53
|
-
// Convert to percentage, apply step, return to value.
|
54
|
-
return $Spectrum.fromStepping( $Spectrum.getStep( $Spectrum.toStepping( value ) ) );
|
55
|
-
});
|
56
|
-
|
57
|
-
}
|
58
|
-
|
59
|
-
// Otherwise, we can simply use the values.
|
60
|
-
return values;
|
61
|
-
}
|
62
|
-
}
|
63
|
-
|
64
|
-
function generateSpread ( $Spectrum, density, mode, group ) {
|
65
|
-
|
66
|
-
var originalSpectrumDirection = $Spectrum.direction,
|
67
|
-
indexes = {},
|
68
|
-
firstInRange = $Spectrum.xVal[0],
|
69
|
-
lastInRange = $Spectrum.xVal[$Spectrum.xVal.length-1],
|
70
|
-
ignoreFirst = false,
|
71
|
-
ignoreLast = false,
|
72
|
-
prevPct = 0;
|
73
|
-
|
74
|
-
// This function loops the spectrum in an ltr linear fashion,
|
75
|
-
// while the toStepping method is direction aware. Trick it into
|
76
|
-
// believing it is ltr.
|
77
|
-
$Spectrum.direction = 0;
|
78
|
-
|
79
|
-
// Create a copy of the group, sort it and filter away all duplicates.
|
80
|
-
group = unique(group.slice().sort(function(a, b){ return a - b; }));
|
81
|
-
|
82
|
-
// Make sure the range starts with the first element.
|
83
|
-
if ( group[0] !== firstInRange ) {
|
84
|
-
group.unshift(firstInRange);
|
85
|
-
ignoreFirst = true;
|
86
|
-
}
|
87
|
-
|
88
|
-
// Likewise for the last one.
|
89
|
-
if ( group[group.length - 1] !== lastInRange ) {
|
90
|
-
group.push(lastInRange);
|
91
|
-
ignoreLast = true;
|
92
|
-
}
|
93
|
-
|
94
|
-
$.each(group, function ( index ) {
|
95
|
-
|
96
|
-
// Get the current step and the lower + upper positions.
|
97
|
-
var step, i, q,
|
98
|
-
low = group[index],
|
99
|
-
high = group[index+1],
|
100
|
-
newPct, pctDifference, pctPos, type,
|
101
|
-
steps, realSteps, stepsize;
|
102
|
-
|
103
|
-
// When using 'steps' mode, use the provided steps.
|
104
|
-
// Otherwise, we'll step on to the next subrange.
|
105
|
-
if ( mode === 'steps' ) {
|
106
|
-
step = $Spectrum.xNumSteps[ index ];
|
107
|
-
}
|
108
|
-
|
109
|
-
// Default to a 'full' step.
|
110
|
-
if ( !step ) {
|
111
|
-
step = high-low;
|
112
|
-
}
|
113
|
-
|
114
|
-
// Low can be 0, so test for false. If high is undefined,
|
115
|
-
// we are at the last subrange. Index 0 is already handled.
|
116
|
-
if ( low === false || high === undefined ) {
|
117
|
-
return;
|
118
|
-
}
|
119
|
-
|
120
|
-
// Find all steps in the subrange.
|
121
|
-
for ( i = low; i <= high; i += step ) {
|
122
|
-
|
123
|
-
// Get the percentage value for the current step,
|
124
|
-
// calculate the size for the subrange.
|
125
|
-
newPct = $Spectrum.toStepping( i );
|
126
|
-
pctDifference = newPct - prevPct;
|
127
|
-
|
128
|
-
steps = pctDifference / density;
|
129
|
-
realSteps = Math.round(steps);
|
130
|
-
|
131
|
-
// This ratio represents the ammount of percentage-space a point indicates.
|
132
|
-
// For a density 1 the points/percentage = 1. For density 2, that percentage needs to be re-devided.
|
133
|
-
// Round the percentage offset to an even number, then divide by two
|
134
|
-
// to spread the offset on both sides of the range.
|
135
|
-
stepsize = pctDifference/realSteps;
|
136
|
-
|
137
|
-
// Divide all points evenly, adding the correct number to this subrange.
|
138
|
-
// Run up to <= so that 100% gets a point, event if ignoreLast is set.
|
139
|
-
for ( q = 1; q <= realSteps; q += 1 ) {
|
140
|
-
|
141
|
-
// The ratio between the rounded value and the actual size might be ~1% off.
|
142
|
-
// Correct the percentage offset by the number of points
|
143
|
-
// per subrange. density = 1 will result in 100 points on the
|
144
|
-
// full range, 2 for 50, 4 for 25, etc.
|
145
|
-
pctPos = prevPct + ( q * stepsize );
|
146
|
-
indexes[pctPos.toFixed(5)] = ['x', 0];
|
147
|
-
}
|
148
|
-
|
149
|
-
// Determine the point type.
|
150
|
-
type = ($.inArray(i, group) > -1) ? 1 : ( mode === 'steps' ? 2 : 0 );
|
151
|
-
|
152
|
-
// Enforce the 'ignoreFirst' option by overwriting the type for 0.
|
153
|
-
if ( !index && ignoreFirst && !low ) {
|
154
|
-
type = 0;
|
155
|
-
}
|
156
|
-
|
157
|
-
if ( !(i === high && ignoreLast)) {
|
158
|
-
// Mark the 'type' of this point. 0 = plain, 1 = real value, 2 = step value.
|
159
|
-
indexes[newPct.toFixed(5)] = [i, type];
|
160
|
-
}
|
161
|
-
|
162
|
-
// Update the percentage count.
|
163
|
-
prevPct = newPct;
|
164
|
-
}
|
165
|
-
});
|
166
|
-
|
167
|
-
// Reset the spectrum.
|
168
|
-
$Spectrum.direction = originalSpectrumDirection;
|
169
|
-
|
170
|
-
return indexes;
|
171
|
-
}
|
172
|
-
|
173
|
-
function addMarking ( CSSstyle, orientation, direction, spread, filterFunc ) {
|
174
|
-
|
175
|
-
var style = ['horizontal', 'vertical'][orientation],
|
176
|
-
element = $('<div/>');
|
177
|
-
|
178
|
-
element.addClass('noUi-pips noUi-pips-'+style);
|
179
|
-
|
180
|
-
function getSize( type, value ){
|
181
|
-
return [ '-normal', '-large', '-sub' ][(type&&filterFunc) ? filterFunc(value, type) : type];
|
182
|
-
}
|
183
|
-
function getTags( offset, source, values ) {
|
184
|
-
return 'class="' + source + ' ' +
|
185
|
-
source + '-' + style + ' ' +
|
186
|
-
source + getSize(values[1], values[0]) +
|
187
|
-
'" style="' + CSSstyle + ': ' + offset + '%"';
|
188
|
-
}
|
189
|
-
function addSpread ( offset, values ){
|
190
|
-
|
191
|
-
if ( direction ) {
|
192
|
-
offset = 100 - offset;
|
193
|
-
}
|
194
|
-
|
195
|
-
// Add a marker for every point
|
196
|
-
element.append('<div '+getTags(offset, 'noUi-marker', values)+'></div>');
|
197
|
-
|
198
|
-
// Values are only appended for points marked '1' or '2'.
|
199
|
-
if ( values[1] ) {
|
200
|
-
element.append('<div '+getTags(offset, 'noUi-value', values)+'>' + Math.round(values[0]) + '</div>');
|
201
|
-
}
|
202
|
-
}
|
203
|
-
|
204
|
-
// Append all points.
|
205
|
-
$.each(spread, addSpread);
|
206
|
-
|
207
|
-
return element;
|
208
|
-
}
|
209
|
-
|
210
|
-
$.fn.noUiSlider_pips = function ( grid ) {
|
211
|
-
|
212
|
-
var mode = grid.mode,
|
213
|
-
density = grid.density || 1,
|
214
|
-
filter = grid.filter || false,
|
215
|
-
values = grid.values || false,
|
216
|
-
stepped = grid.stepped || false;
|
217
|
-
|
218
|
-
return this.each(function(){
|
219
|
-
|
220
|
-
var info = this.getInfo(),
|
221
|
-
group = getGroup( info[0], mode, values, stepped ),
|
222
|
-
spread = generateSpread( info[0], density, mode, group );
|
223
|
-
|
224
|
-
return $(this).append(addMarking(
|
225
|
-
info[1],
|
226
|
-
info[2],
|
227
|
-
info[0].direction,
|
228
|
-
spread,
|
229
|
-
filter
|
230
|
-
));
|
231
|
-
});
|
232
|
-
};
|
233
|
-
|
234
|
-
}( window.jQuery || window.Zepto ));
|
@@ -1,98 +0,0 @@
|
|
1
|
-
|
2
|
-
/* Base;
|
3
|
-
*
|
4
|
-
*/
|
5
|
-
.noUi-pips,
|
6
|
-
.noUi-pips * {
|
7
|
-
-moz-box-sizing: border-box;
|
8
|
-
box-sizing: border-box;
|
9
|
-
}
|
10
|
-
.noUi-pips {
|
11
|
-
position: absolute;
|
12
|
-
font: 400 12px Arial;
|
13
|
-
color: #999;
|
14
|
-
}
|
15
|
-
|
16
|
-
/* Values;
|
17
|
-
*
|
18
|
-
*/
|
19
|
-
.noUi-value {
|
20
|
-
width: 40px;
|
21
|
-
position: absolute;
|
22
|
-
text-align: center;
|
23
|
-
}
|
24
|
-
.noUi-value-sub {
|
25
|
-
color: #ccc;
|
26
|
-
font-size: 10px;
|
27
|
-
}
|
28
|
-
|
29
|
-
/* Markings;
|
30
|
-
*
|
31
|
-
*/
|
32
|
-
.noUi-marker {
|
33
|
-
position: absolute;
|
34
|
-
background: #CCC;
|
35
|
-
}
|
36
|
-
.noUi-marker-sub {
|
37
|
-
background: #AAA;
|
38
|
-
}
|
39
|
-
.noUi-marker-large {
|
40
|
-
background: #AAA;
|
41
|
-
}
|
42
|
-
|
43
|
-
/* Horizontal layout;
|
44
|
-
*
|
45
|
-
*/
|
46
|
-
.noUi-pips-horizontal {
|
47
|
-
padding: 10px 0;
|
48
|
-
height: 50px;
|
49
|
-
top: 100%;
|
50
|
-
left: 0;
|
51
|
-
width: 100%;
|
52
|
-
}
|
53
|
-
.noUi-value-horizontal {
|
54
|
-
margin-left: -20px;
|
55
|
-
padding-top: 20px;
|
56
|
-
}
|
57
|
-
.noUi-value-horizontal.noUi-value-sub {
|
58
|
-
padding-top: 15px;
|
59
|
-
}
|
60
|
-
|
61
|
-
.noUi-marker-horizontal.noUi-marker {
|
62
|
-
margin-left: -1px;
|
63
|
-
width: 2px;
|
64
|
-
height: 5px;
|
65
|
-
}
|
66
|
-
.noUi-marker-horizontal.noUi-marker-sub {
|
67
|
-
height: 10px;
|
68
|
-
}
|
69
|
-
.noUi-marker-horizontal.noUi-marker-large {
|
70
|
-
height: 15px;
|
71
|
-
}
|
72
|
-
|
73
|
-
/* Vertical layout;
|
74
|
-
*
|
75
|
-
*/
|
76
|
-
.noUi-pips-vertical {
|
77
|
-
padding: 0 10px;
|
78
|
-
height: 100%;
|
79
|
-
top: 0;
|
80
|
-
left: 100%;
|
81
|
-
}
|
82
|
-
.noUi-value-vertical {
|
83
|
-
width: 15px;
|
84
|
-
margin-left: 20px;
|
85
|
-
margin-top: -5px;
|
86
|
-
}
|
87
|
-
|
88
|
-
.noUi-marker-vertical.noUi-marker {
|
89
|
-
width: 5px;
|
90
|
-
height: 2px;
|
91
|
-
margin-top: -1px;
|
92
|
-
}
|
93
|
-
.noUi-marker-vertical.noUi-marker-sub {
|
94
|
-
width: 10px;
|
95
|
-
}
|
96
|
-
.noUi-marker-vertical.noUi-marker-large {
|
97
|
-
width: 15px;
|
98
|
-
}
|