slide-selector 0.1.2 → 0.1.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -14
- data/lib/slide/selector.rb +12 -15
- data/lib/slide/selector/core/version.rb +1 -1
- data/lib/slide/selector/helpers/helper_methods.rb +3 -10
- data/vendor/assets/images/range-selector.png +0 -0
- data/vendor/assets/javascripts/slide-selector.js +15 -2
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e80b4df481ac573f5b8e87dc33cb713cbc31ed78752b04971a48ed6481cd2ab7
|
4
|
+
data.tar.gz: 6ffccb5a484658a6839f49bf9ad122b31e8ee02bd6e17b42cd3808ff4f88ec99
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a449478307359bbccdedb11a406b8b20e274b231058ae942125f2f69296ff162c6b155c1b06c2ce9feaf3b726c50236dcd7f033ed3e9d7930950ee73f3a23a15
|
7
|
+
data.tar.gz: 6e4c8a55911c493d67756246fefa8026e9a8e2c0a67a8f65747820b041999c1181d569bf1ed4d8cf388c8bdf182ec758154340ee6b212db2f1a55ad4a4ccc9fe
|
data/README.md
CHANGED
@@ -27,38 +27,42 @@ Or install it yourself as:
|
|
27
27
|
Rename applitcation.css to applitcation.scss and add `@import "slide-selector.css";`
|
28
28
|
In applitcation.js add `//= require slide-selector` after `//= require_tree .`
|
29
29
|
|
30
|
-
|
30
|
+
Syntax:
|
31
|
+
```
|
32
|
+
<%= slide_selector_tag [:min_field, :max_field], [:min_range, :max_range], options_for_select, options = {} %>
|
33
|
+
```
|
34
|
+
Options:
|
35
|
+
`:slider_step` - To specify the size of each moment.
|
36
|
+
`:type` - For dollar type use `'amount'`.
|
37
|
+
`:selector` - To disable drop-down options (`options_for_select` can be nil for this).
|
38
|
+
`:class` - Set class to div
|
39
|
+
|
40
|
+
Examples:
|
31
41
|
With form:
|
32
42
|
```
|
33
43
|
<%= form_for root_path do |f| %>
|
34
|
-
<%= f.slide_selector [:min_rank, :max_rank], [0, 100],
|
44
|
+
<%= f.slide_selector [:min_rank, :max_rank], [0, 100], amount_drop_down_options, type: 'amount', selector: false, slider_step: 5 %>
|
35
45
|
<br><br>
|
36
|
-
<%= f.slide_selector [:min_rank2, :max_rank2], [0, 10000],
|
46
|
+
<%= f.slide_selector [:min_rank2, :max_rank2], [0, 10000], simple_drop_down_options %>
|
37
47
|
<% end %>
|
38
48
|
```
|
39
49
|
Without form:
|
40
50
|
```
|
41
|
-
<%= slide_selector_tag [:min_rank3, :max_rank3], [0, 10000],
|
51
|
+
<%= slide_selector_tag [:min_rank3, :max_rank3], [0, 10000], simple_drop_down_options %>
|
42
52
|
```
|
43
53
|
|
44
54
|
In application_helper.rb
|
45
55
|
```
|
46
56
|
module ApplicationHelper
|
47
|
-
def
|
48
|
-
{"$
|
57
|
+
def amount_drop_down_options
|
58
|
+
{"$1" => 100, "$5" => 500, "$10" => 1000, "$25" => 2500, "$50" => 5000, "$75" => 7500, "$100" => 10000, "$250" => 25000, "$500" => 50000}
|
49
59
|
end
|
50
|
-
def
|
51
|
-
{"1" => 1, "50" => 50, "100" => 100, "200" => 200, "300" => 300, "400" => 400, "500" => 500, "1000" => 1000, "1500" => 1500, "
|
60
|
+
def simple_drop_down_options
|
61
|
+
{"1" => 1, "50" => 50, "100" => 100, "200" => 200, "300" => 300, "400" => 400, "500" => 500, "1000" => 1000, "1500" => 1500, "2000" => 2000, "5000" => 5000}
|
52
62
|
end
|
53
63
|
end
|
54
64
|
```
|
55
65
|
|
56
|
-
## Development
|
57
|
-
|
58
|
-
After checking out the repo, run `bin/setup` to install dependencies. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
59
|
-
|
60
|
-
To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org).
|
61
|
-
|
62
66
|
## Contributing
|
63
67
|
|
64
68
|
Bug reports and pull requests are welcome on GitHub at https://github.com/touqeer-tqr/slide-selector. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
data/lib/slide/selector.rb
CHANGED
@@ -13,39 +13,36 @@ module Slide
|
|
13
13
|
options[:suggestions] = false if options[:suggestions].nil?
|
14
14
|
options[:slider_step] = 1 if options[:slider_step].nil?
|
15
15
|
options[:selector] = true if options[:selector].nil?
|
16
|
-
options[:value] = [select_options.keys.first, select_options.keys.last] if options[:value].nil? && options[:selector]
|
17
16
|
options[:type] = options[:type] == 'amount' ? '$' : ''
|
18
17
|
selectors = selectors.map &:to_s
|
19
|
-
get_select_field = lambda { |selector, select_type|
|
18
|
+
get_select_field = lambda { |selector, select_type, value = nil|
|
20
19
|
result = self.hidden_field(selector)
|
21
|
-
if result.include?('value')
|
20
|
+
if result.include?('value') || value.present?
|
22
21
|
result = Hash.from_xml(result)['input']
|
23
|
-
selected = {result['value'] => result['value']}
|
22
|
+
selected = value.present? ? {value => value} : {result['value'] => result['value']}
|
24
23
|
return self.select(selector, options_for_select(select_options.merge(selected), selected.to_a.last))
|
25
24
|
else
|
26
25
|
selected = select_type == 'min' ? select_options.first : select_options.to_a.last
|
27
26
|
return self.select(selector, options_for_select(select_options, selected))
|
28
27
|
end
|
29
28
|
}
|
29
|
+
"<div class='#{options[:class]}' data-slide-selector=true data-options='{\"suggestions\": #{options[:suggestions]}, \"selector\": #{options[:selector]}, \"type\": \"#{options[:type]}\"}' >".html_safe+
|
30
30
|
(if options[:selector]
|
31
|
-
get_select_field.call(selectors[0], 'min')
|
31
|
+
get_select_field.call(selectors[0], 'min', (options[:value][0] if options[:value].present?))
|
32
|
+
elsif options[:value].present?
|
33
|
+
self.text_field(selectors[0], value: options[:value][0])
|
32
34
|
else
|
33
35
|
self.text_field(selectors[0])
|
34
36
|
end)+
|
35
|
-
text_field_tag(selectors[0]+'_'+selectors[1], nil, data: {'slider-step': options[:slider_step]})+
|
37
|
+
text_field_tag(selectors[0]+'_'+selectors[1], nil, data: {'slider-step': options[:slider_step], 'slide-range': ranges.map(&:to_s)})+
|
36
38
|
(if options[:selector]
|
37
|
-
get_select_field.call(selectors[1], 'max')
|
39
|
+
get_select_field.call(selectors[1], 'max', (options[:value][1] if options[:value].present?))
|
40
|
+
elsif options[:value].present?
|
41
|
+
self.text_field(selectors[1], value: options[:value][1])
|
38
42
|
else
|
39
43
|
self.text_field(selectors[1])
|
40
44
|
end)+
|
41
|
-
|
42
|
-
end
|
43
|
-
def generate_script(selectors, ranges, options)
|
44
|
-
return <<-SCRIPT
|
45
|
-
<script type='text/javascript'>
|
46
|
-
setSlider(#{selectors.map{ |field_name| object_name.to_s+'_'+field_name.to_s}}, #{ranges.map(&:to_s)}, #{options.to_json}, '#{selectors[0]+'_'+selectors[1]}')
|
47
|
-
</script>
|
48
|
-
SCRIPT
|
45
|
+
"</div>".html_safe
|
49
46
|
end
|
50
47
|
end
|
51
48
|
end
|
@@ -9,26 +9,19 @@ module Slide
|
|
9
9
|
options[:type] = options[:type] == 'amount' ? '$' : ''
|
10
10
|
options[:selector] = true if options[:selector].nil?
|
11
11
|
selectors = selectors.map &:to_s
|
12
|
+
"<div class='#{options[:class]}' data-slide-selector=true data-options='{\"suggestions\": #{options[:suggestions]}, \"selector\": #{options[:selector]}, \"type\": \"#{options[:type]}\"}' >".html_safe+
|
12
13
|
(if options[:selector]
|
13
14
|
select_tag(selectors[0], options_for_select(select_options), value: options[:value][0])
|
14
15
|
else
|
15
16
|
text_field_tag(selectors[0], nil, value: options[:value][0])
|
16
17
|
end)+
|
17
|
-
text_field_tag(selectors[0]+'_'+selectors[1], nil, data: {'slider-step': options[:slider_step]})+
|
18
|
+
text_field_tag(selectors[0]+'_'+selectors[1], nil, data: {'slider-step': options[:slider_step], 'slide-range': ranges.map(&:to_s)})+
|
18
19
|
(if options[:selector]
|
19
20
|
select_tag(selectors[1], options_for_select(select_options), value: options[:value][1])
|
20
21
|
else
|
21
22
|
text_field_tag(selectors[1], nil, value: options[:value][1])
|
22
23
|
end)+
|
23
|
-
|
24
|
-
end
|
25
|
-
private
|
26
|
-
def generate_script(selectors, ranges, options)
|
27
|
-
return <<-SCRIPT
|
28
|
-
<script type='text/javascript'>
|
29
|
-
setSlider(#{selectors.map(&:to_s)}, #{ranges.map(&:to_s)}, #{options.to_json}, '#{selectors[0]+'_'+selectors[1]}')
|
30
|
-
</script>
|
31
|
-
SCRIPT
|
24
|
+
"</div>".html_safe
|
32
25
|
end
|
33
26
|
end
|
34
27
|
end
|
Binary file
|
@@ -98,7 +98,6 @@ setSlider = function(selectors, ranges, options, sliderField){
|
|
98
98
|
slideValue.val(ranges[1]);
|
99
99
|
}
|
100
100
|
sliderRange = [parseFloat(slideMinValue.val().replace(/[$,]/g, '')), parseFloat(slideValue.val().replace(/[$,]/g, ''))];
|
101
|
-
console.log(sliderRange);
|
102
101
|
mySlider = new Slider('#'+sliderField, {
|
103
102
|
id: 'slider12c',
|
104
103
|
min: parseFloat(ranges[0]),
|
@@ -122,4 +121,18 @@ setSlider = function(selectors, ranges, options, sliderField){
|
|
122
121
|
$('#'+selectors[0]).blur();
|
123
122
|
$('#'+selectors[1]).blur();
|
124
123
|
setOnChangeListner(selectors, ranges, mySlider);
|
125
|
-
}
|
124
|
+
}
|
125
|
+
|
126
|
+
$( document ).ready(function() {
|
127
|
+
$('[data-slide-selector=true]').each(function() {
|
128
|
+
dataTags = $(this).data('options');
|
129
|
+
if(!dataTags['selector']){
|
130
|
+
inputTags = $(this).find('input');
|
131
|
+
setSlider([inputTags[0].id, inputTags[2].id], $(inputTags[1]).data('slideRange'), $(this).data('options'), inputTags[1].id);
|
132
|
+
}else{
|
133
|
+
selectTags = $(this).find('select');
|
134
|
+
inputTags = $(this).find('input');
|
135
|
+
setSlider([selectTags[0].id, selectTags[1].id], $(inputTags[0]).data('slideRange'), $(this).data('options'), inputTags[0].id);
|
136
|
+
}
|
137
|
+
});
|
138
|
+
});
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slide-selector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Touqeer-tqr
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-04-
|
11
|
+
date: 2019-04-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|