glider-rails 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/app/assets/javascripts/glider.coffee +17 -16
- data/app/assets/javascripts/glider.js +31 -28
- data/app/assets/javascripts/glider.min.js +1 -1
- data/glider-rails.gemspec +3 -2
- metadata +6 -5
@@ -1,5 +1,5 @@
|
|
1
1
|
###
|
2
|
-
glider 0.1.
|
2
|
+
glider 0.1.1 - AngularJS slider
|
3
3
|
https://github.com/evrone/glider
|
4
4
|
Copyright (c) 2013 Valentin Vasilyev, Dmitry Karpunin
|
5
5
|
Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
|
@@ -18,14 +18,14 @@
|
|
18
18
|
'use strict';
|
19
19
|
app = angular.module("glider", [])
|
20
20
|
|
21
|
-
app.directive
|
21
|
+
app.directive 'slider', ['$document', ($document) ->
|
22
22
|
|
23
23
|
getSubElement = (sliderElement, className) ->
|
24
24
|
sliderElement[0].getElementsByClassName(className)[0]
|
25
25
|
|
26
26
|
moveHandle = (elem, posX) ->
|
27
|
-
angular.element(getSubElement(elem,
|
28
|
-
angular.element(getSubElement(elem,
|
27
|
+
angular.element(getSubElement(elem, 'handle')).css('left', "#{posX}%")
|
28
|
+
angular.element(getSubElement(elem, 'range')).css('width', "#{posX}%")
|
29
29
|
|
30
30
|
template: """
|
31
31
|
<span class="g-slider horizontal">
|
@@ -68,7 +68,12 @@ app.directive "slider", ["$document", ($document) ->
|
|
68
68
|
value: parseInt(trim(i), 10)
|
69
69
|
offset: offset(min, max, i)
|
70
70
|
|
71
|
-
|
71
|
+
createSnapValues = (increments)->
|
72
|
+
if attrs.increments?
|
73
|
+
([scope.min(), scope.max()].concat(i.value for i in increments)).sort((a,b) -> a - b)
|
74
|
+
|
75
|
+
|
76
|
+
sliderElement = getSubElement(element, 'slider')
|
72
77
|
dragging = false
|
73
78
|
xPosition = 0
|
74
79
|
step = if attrs.step? then parseInt(attrs.step, 10) else 1
|
@@ -77,10 +82,7 @@ app.directive "slider", ["$document", ($document) ->
|
|
77
82
|
scope.value = scope.min() unless scope.value?
|
78
83
|
|
79
84
|
scope.increments = parseIncrements(attrs.increments)
|
80
|
-
|
81
|
-
scope.snapValues = ([scope.min(), scope.max()].concat(i.value for i in scope.increments))
|
82
|
-
.sort((a,b) -> a - b)
|
83
|
-
|
85
|
+
scope.snapValues = createSnapValues(scope.increments)
|
84
86
|
|
85
87
|
refreshHandle = ->
|
86
88
|
range = scope.max() - scope.min()
|
@@ -91,19 +93,19 @@ app.directive "slider", ["$document", ($document) ->
|
|
91
93
|
xPosition = Math.min(Math.max(0, xPosition), 100)
|
92
94
|
moveHandle element, xPosition
|
93
95
|
|
94
|
-
scope.$watch
|
96
|
+
scope.$watch 'min()', (minValue) ->
|
95
97
|
if scope.value < minValue
|
96
98
|
scope.value = minValue
|
97
99
|
else
|
98
100
|
refreshHandle()
|
99
101
|
|
100
|
-
scope.$watch
|
102
|
+
scope.$watch 'max()', (maxValue) ->
|
101
103
|
if scope.value > maxValue
|
102
104
|
scope.value = maxValue
|
103
105
|
else
|
104
106
|
refreshHandle()
|
105
107
|
|
106
|
-
scope.$watch
|
108
|
+
scope.$watch 'value', (newVal, oldVal)->
|
107
109
|
return if dragging
|
108
110
|
if scope.min() <= newVal <= scope.max()
|
109
111
|
refreshHandle()
|
@@ -151,9 +153,8 @@ app.directive "slider", ["$document", ($document) ->
|
|
151
153
|
scope.value = closest
|
152
154
|
scope.$apply()
|
153
155
|
|
154
|
-
$document.on
|
156
|
+
$document.on 'mousemove', ($event) ->
|
155
157
|
return unless dragging
|
156
|
-
# Calculate value handle position
|
157
158
|
moveDelta = $event.pageX - startPointX
|
158
159
|
xPosition += moveDelta / sliderElement.offsetWidth * 100
|
159
160
|
if xPosition < 0
|
@@ -165,11 +166,11 @@ app.directive "slider", ["$document", ($document) ->
|
|
165
166
|
updateValue() unless deferUpdate
|
166
167
|
moveHandle element, xPosition
|
167
168
|
|
168
|
-
$document.on
|
169
|
+
$document.on 'mouseup', ->
|
169
170
|
dragging = false
|
170
171
|
updateValue() if deferUpdate
|
171
172
|
snap() if scope.increments
|
172
|
-
$document.off
|
173
|
+
$document.off 'mousemove'
|
173
174
|
]
|
174
175
|
app.filter 'intersperse', ->
|
175
176
|
(input) ->
|
@@ -1,6 +1,6 @@
|
|
1
1
|
// Generated by CoffeeScript 1.6.3
|
2
2
|
/*
|
3
|
-
glider 0.1.
|
3
|
+
glider 0.1.1 - AngularJS slider
|
4
4
|
https://github.com/evrone/glider
|
5
5
|
Copyright (c) 2013 Valentin Vasilyev, Dmitry Karpunin
|
6
6
|
Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) license.
|
@@ -24,15 +24,15 @@
|
|
24
24
|
|
25
25
|
app = angular.module("glider", []);
|
26
26
|
|
27
|
-
app.directive(
|
28
|
-
|
27
|
+
app.directive('slider', [
|
28
|
+
'$document', function($document) {
|
29
29
|
var getSubElement, moveHandle;
|
30
30
|
getSubElement = function(sliderElement, className) {
|
31
31
|
return sliderElement[0].getElementsByClassName(className)[0];
|
32
32
|
};
|
33
33
|
moveHandle = function(elem, posX) {
|
34
|
-
angular.element(getSubElement(elem,
|
35
|
-
return angular.element(getSubElement(elem,
|
34
|
+
angular.element(getSubElement(elem, 'handle')).css('left', "" + posX + "%");
|
35
|
+
return angular.element(getSubElement(elem, 'range')).css('width', "" + posX + "%");
|
36
36
|
};
|
37
37
|
return {
|
38
38
|
template: "<span class=\"g-slider horizontal\">\n <span class=\"slider\">\n <span class=\"range\"></span>\n <span class=\"handle\" ng-mousedown=\"mouseDown($event)\"></span>\n </span>\n <span class=\"side dec\">\n <span class=\"button\" ng-click=\"step(-1)\">-</span>\n <span class=\"bound-value\">{{min() | intersperse}}</span>\n </span>\n <span class=\"side inc\">\n <span class=\"button\" ng-click=\"step(+1)\">+</span>\n <span class=\"bound-value\">{{max() | intersperse}}</span>\n </span>\n <span class=\"increments\">\n <span ng-repeat=\"i in increments\" class=\"i\" style=\"left: {{i.offset}}%\">\n {{ i.value | intersperse }}\n </span>\n </span>\n</span>",
|
@@ -44,7 +44,7 @@
|
|
44
44
|
max: "&"
|
45
45
|
},
|
46
46
|
link: function(scope, element, attrs) {
|
47
|
-
var deferUpdate, dragging,
|
47
|
+
var createSnapValues, deferUpdate, dragging, parseIncrements, refreshHandle, sliderElement, step, xPosition;
|
48
48
|
parseIncrements = function() {
|
49
49
|
var i, increments, max, min, offset, trim;
|
50
50
|
trim = function(input) {
|
@@ -77,7 +77,23 @@
|
|
77
77
|
})();
|
78
78
|
}
|
79
79
|
};
|
80
|
-
|
80
|
+
createSnapValues = function(increments) {
|
81
|
+
var i;
|
82
|
+
if (attrs.increments != null) {
|
83
|
+
return ([scope.min(), scope.max()].concat((function() {
|
84
|
+
var _i, _len, _results;
|
85
|
+
_results = [];
|
86
|
+
for (_i = 0, _len = increments.length; _i < _len; _i++) {
|
87
|
+
i = increments[_i];
|
88
|
+
_results.push(i.value);
|
89
|
+
}
|
90
|
+
return _results;
|
91
|
+
})())).sort(function(a, b) {
|
92
|
+
return a - b;
|
93
|
+
});
|
94
|
+
}
|
95
|
+
};
|
96
|
+
sliderElement = getSubElement(element, 'slider');
|
81
97
|
dragging = false;
|
82
98
|
xPosition = 0;
|
83
99
|
step = attrs.step != null ? parseInt(attrs.step, 10) : 1;
|
@@ -86,20 +102,7 @@
|
|
86
102
|
scope.value = scope.min();
|
87
103
|
}
|
88
104
|
scope.increments = parseIncrements(attrs.increments);
|
89
|
-
|
90
|
-
scope.snapValues = ([scope.min(), scope.max()].concat((function() {
|
91
|
-
var _i, _len, _ref, _results;
|
92
|
-
_ref = scope.increments;
|
93
|
-
_results = [];
|
94
|
-
for (_i = 0, _len = _ref.length; _i < _len; _i++) {
|
95
|
-
i = _ref[_i];
|
96
|
-
_results.push(i.value);
|
97
|
-
}
|
98
|
-
return _results;
|
99
|
-
})())).sort(function(a, b) {
|
100
|
-
return a - b;
|
101
|
-
});
|
102
|
-
}
|
105
|
+
scope.snapValues = createSnapValues(scope.increments);
|
103
106
|
refreshHandle = function() {
|
104
107
|
var range;
|
105
108
|
range = scope.max() - scope.min();
|
@@ -111,21 +114,21 @@
|
|
111
114
|
}
|
112
115
|
return moveHandle(element, xPosition);
|
113
116
|
};
|
114
|
-
scope.$watch(
|
117
|
+
scope.$watch('min()', function(minValue) {
|
115
118
|
if (scope.value < minValue) {
|
116
119
|
return scope.value = minValue;
|
117
120
|
} else {
|
118
121
|
return refreshHandle();
|
119
122
|
}
|
120
123
|
});
|
121
|
-
scope.$watch(
|
124
|
+
scope.$watch('max()', function(maxValue) {
|
122
125
|
if (scope.value > maxValue) {
|
123
126
|
return scope.value = maxValue;
|
124
127
|
} else {
|
125
128
|
return refreshHandle();
|
126
129
|
}
|
127
130
|
});
|
128
|
-
scope.$watch(
|
131
|
+
scope.$watch('value', function(newVal, oldVal) {
|
129
132
|
if (dragging) {
|
130
133
|
return;
|
131
134
|
}
|
@@ -190,7 +193,7 @@
|
|
190
193
|
return scope.$apply();
|
191
194
|
};
|
192
195
|
snap = function() {
|
193
|
-
var closest, diff, l, min;
|
196
|
+
var closest, diff, i, l, min;
|
194
197
|
i = 0;
|
195
198
|
l = scope.snapValues.length;
|
196
199
|
while (i < l) {
|
@@ -207,7 +210,7 @@
|
|
207
210
|
scope.value = closest;
|
208
211
|
return scope.$apply();
|
209
212
|
};
|
210
|
-
$document.on(
|
213
|
+
$document.on('mousemove', function($event) {
|
211
214
|
var moveDelta;
|
212
215
|
if (!dragging) {
|
213
216
|
return;
|
@@ -226,7 +229,7 @@
|
|
226
229
|
}
|
227
230
|
return moveHandle(element, xPosition);
|
228
231
|
});
|
229
|
-
return $document.on(
|
232
|
+
return $document.on('mouseup', function() {
|
230
233
|
dragging = false;
|
231
234
|
if (deferUpdate) {
|
232
235
|
updateValue();
|
@@ -234,7 +237,7 @@
|
|
234
237
|
if (scope.increments) {
|
235
238
|
snap();
|
236
239
|
}
|
237
|
-
return $document.off(
|
240
|
+
return $document.off('mousemove');
|
238
241
|
});
|
239
242
|
};
|
240
243
|
}
|
@@ -1 +1 @@
|
|
1
|
-
!function(){"use strict";var n;n=angular.module("glider",[]),n.directive("slider",["$document",function(n){var e,a;return e=function(n,e){return n[0].getElementsByClassName(e)[0]},a=function(n,a){return angular.element(e(n,"handle")).css("left",""+a+"%"),angular.element(e(n,"range")).css("width",""+a+"%")},{template:'<span class="g-slider horizontal">\n <span class="slider">\n <span class="range"></span>\n <span class="handle" ng-mousedown="mouseDown($event)"></span>\n </span>\n <span class="side dec">\n <span class="button" ng-click="step(-1)">-</span>\n <span class="bound-value">{{min() |
|
1
|
+
!function(){"use strict";var n;n=angular.module("glider",[]),n.directive("slider",["$document",function(n){var e,a;return e=function(n,e){return n[0].getElementsByClassName(e)[0]},a=function(n,a){return angular.element(e(n,"handle")).css("left",""+a+"%"),angular.element(e(n,"range")).css("width",""+a+"%")},{template:'<span class="g-slider horizontal">\n <span class="slider">\n <span class="range"></span>\n <span class="handle" ng-mousedown="mouseDown($event)"></span>\n </span>\n <span class="side dec">\n <span class="button" ng-click="step(-1)">-</span>\n <span class="bound-value">{{min() | intersperse}}</span>\n </span>\n <span class="side inc">\n <span class="button" ng-click="step(+1)">+</span>\n <span class="bound-value">{{max() | intersperse}}</span>\n </span>\n <span class="increments">\n <span ng-repeat="i in increments" class="i" style="left: {{i.offset}}%">\n {{ i.value | intersperse }}\n </span>\n </span>\n</span>',replace:!0,restrict:"E",scope:{value:"=",min:"&",max:"&"},link:function(t,r,s){var u,i,l,c,o,p,f,m;return c=function(){var n,e,a,r,u,i;return i=function(n){return n?n.replace(/^\s+|\s+$/g,""):n},u=function(n,e,a){return 100*(a/Math.abs(e-n))},s.increments?(r=t.min(),a=t.max(),e=s.increments.split(","),e=function(){var t,s,l,c;for(c=[],t=0,s=e.length;s>t;t++)n=e[t],r<(l=parseInt(n))&&a>l&&c.push({value:parseInt(i(n),10),offset:u(r,a,n)});return c}()):void 0},u=function(n){var e;return null!=s.increments?[t.min(),t.max()].concat(function(){var a,t,r;for(r=[],a=0,t=n.length;t>a;a++)e=n[a],r.push(e.value);return r}()).sort(function(n,e){return n-e}):void 0},p=e(r,"slider"),l=!1,m=0,f=null!=s.step?parseInt(s.step,10):1,i=null!=s.deferUpdate,null==t.value&&(t.value=t.min()),t.increments=c(s.increments),t.snapValues=u(t.increments),o=function(){var n;return n=t.max()-t.min(),0===n?m=0:(m=100*((t.value-t.min())/n),m=Math.min(Math.max(0,m),100)),a(r,m)},t.$watch("min()",function(n){return t.value<n?t.value=n:o()}),t.$watch("max()",function(n){return t.value>n?t.value=n:o()}),t.$watch("value",function(n,e){return l?void 0:t.min()<=n&&n<=t.max()?o():n=e}),t.step=function(n){var e,a;return a=function(n){var e;return e=t.value+n*f,t.min()<=e&&e<=t.max()?t.value=e:void 0},e=function(n){var e,a;return e=n>0?function(){var n,e,r,s;for(r=t.snapValues,s=[],n=0,e=r.length;e>n;n++)a=r[n],a>t.value&&s.push(a);return s}()[0]:function(){var n,e,r,s;for(r=t.snapValues,s=[],n=0,e=r.length;e>n;n++)a=r[n],a<t.value&&s.push(a);return s}().sort(function(n,e){return e-n})[0],null!=e?t.value=e:void 0},null!=s.increments?e(n):a(n)},t.mouseDown=function(e){var s,u,c;return l=!0,u=e.pageX,c=function(){return t.value=Math.round(((t.max()-t.min())*(m/100)+t.min())/f)*f,t.$apply()},s=function(){var n,e,a,r,s;for(a=0,r=t.snapValues.length;r>a;)e=Math.abs(t.snapValues[a]-t.value),("undefined"==typeof s||null===s)&&(s=e),s>=e&&(n=t.snapValues[a],s=e),a++;return t.value=n,t.$apply()},n.on("mousemove",function(n){var e;if(l)return e=n.pageX-u,m+=100*(e/p.offsetWidth),0>m?m=0:m>100?m=100:u=n.pageX,i||c(),a(r,m)}),n.on("mouseup",function(){return l=!1,i&&c(),t.increments&&s(),n.off("mousemove")})}}}}]),n.filter("intersperse",function(){return function(n){var e,a,t,r;if(null!=n)return n=n.toString(),e=function(n){return n.split("").reverse().join("")},a=e(n),t=a.replace(/(.{3})/g,"$1 "),r=e(t),r.trim()}})}.call(this);
|
data/glider-rails.gemspec
CHANGED
@@ -4,12 +4,13 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
4
|
|
5
5
|
Gem::Specification.new do |gem|
|
6
6
|
gem.name = "glider-rails"
|
7
|
-
gem.version = "0.1.
|
8
|
-
gem.authors = ["Valentin Vasilyev", "Dmitry Karpunin"]
|
7
|
+
gem.version = "0.1.1"
|
8
|
+
gem.authors = ["Valentin Valve Vasilyev", "Dmitry KODer Karpunin"]
|
9
9
|
gem.email = ["iamvalentin@gmail.com", "koderfunk@gmail.com"]
|
10
10
|
gem.description = "Glider, AngularJS UI slider for rails asset pipeline"
|
11
11
|
gem.summary = "Glider — AngularJS UI slider library, packaged for Ruby-on-Rails asset pipeline"
|
12
12
|
gem.homepage = "http://evrone.github.com/glider-rails"
|
13
|
+
gem.license = "MIT"
|
13
14
|
|
14
15
|
gem.files = `git ls-files`.split($/)
|
15
16
|
gem.require_paths = ["lib"]
|
metadata
CHANGED
@@ -1,16 +1,16 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: glider-rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
|
-
- Valentin Vasilyev
|
9
|
-
- Dmitry Karpunin
|
8
|
+
- Valentin Valve Vasilyev
|
9
|
+
- Dmitry KODer Karpunin
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-10-
|
13
|
+
date: 2013-10-04 00:00:00.000000000 Z
|
14
14
|
dependencies: []
|
15
15
|
description: Glider, AngularJS UI slider for rails asset pipeline
|
16
16
|
email:
|
@@ -31,7 +31,8 @@ files:
|
|
31
31
|
- glider-rails.gemspec
|
32
32
|
- lib/glider-rails.rb
|
33
33
|
homepage: http://evrone.github.com/glider-rails
|
34
|
-
licenses:
|
34
|
+
licenses:
|
35
|
+
- MIT
|
35
36
|
post_install_message:
|
36
37
|
rdoc_options: []
|
37
38
|
require_paths:
|