filter_form 0.0.8 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +3 -1
- data/lib/assets/javascripts/filter_form.js.coffee +3 -0
- data/lib/filter_form/input_builder.rb +4 -1
- data/lib/filter_form/inputs/base.rb +17 -1
- data/lib/filter_form/inputs/select/base.rb +2 -6
- data/lib/filter_form/inputs/select/select2.rb +9 -0
- data/lib/filter_form/inputs/string/base.rb +5 -9
- data/lib/filter_form/inputs/string/date.rb +1 -7
- data/lib/filter_form/version.rb +1 -1
- metadata +2 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b830a861ee39acd8f2c1b5ed04935ad77f3b509a
|
4
|
+
data.tar.gz: c311699b26fb7f0bca2ef57e6173287121735121
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69267fd08e65bbb07f3757f1f37a2d4893c802fb12515a1043c864744d9ef8c7ec7d0f87b2251725c2edf243677fbd627cdce8c3dd337bc3b2271ff4bd97ad05
|
7
|
+
data.tar.gz: 72c09ffcc2dd31f588dd6866f3ad7a7655c3b1e6c414f7000a8879d936046e6784f70dcd86aafdfd4112b841b473ea578b4ad7c0c1244284d9cd7d5ac6bde616
|
data/README.md
CHANGED
@@ -47,6 +47,7 @@ In your view file:
|
|
47
47
|
Mapping | Database Column Type | Default predicate | Generated HTML Element |
|
48
48
|
--------------- |:------------------------------------------------|:----------------------|:--------------------------|
|
49
49
|
`string` | `string` | `cont` | `input[type=text]` |
|
50
|
+
`select2` | `string` | `eq` | `select` |
|
50
51
|
`integer` | `integer` | `eq` | `input[type=text]` |
|
51
52
|
`datetime` | `datetime` | `eq` | `input[type=text]` |
|
52
53
|
`date` | `date` | `eq` | `input[type=text]` |
|
@@ -59,7 +60,8 @@ Of course you can customize your filter, like:
|
|
59
60
|
|
60
61
|
```erb
|
61
62
|
<%= filter_form_for @q do |f| %>
|
62
|
-
<%= f.filter_input :
|
63
|
+
<%= f.filter_input :title, as: :select2 %>
|
64
|
+
<%= f.filter_input :year, as: :select, collection: (2000..2013).to_a, predicate: :not_eq %>
|
63
65
|
<%= f.button :submit %>
|
64
66
|
<% end %>
|
65
67
|
```
|
@@ -2,6 +2,7 @@ require 'filter_form/inputs/base'
|
|
2
2
|
|
3
3
|
require 'filter_form/inputs/select/base'
|
4
4
|
require 'filter_form/inputs/select/belongs_to'
|
5
|
+
require 'filter_form/inputs/select/select2'
|
5
6
|
|
6
7
|
require 'filter_form/inputs/string/base'
|
7
8
|
require 'filter_form/inputs/string/date'
|
@@ -30,7 +31,7 @@ module FilterForm
|
|
30
31
|
def predicate
|
31
32
|
return custom_predicate if custom_predicate
|
32
33
|
|
33
|
-
case
|
34
|
+
case type
|
34
35
|
when :string
|
35
36
|
:cont
|
36
37
|
else
|
@@ -52,6 +53,8 @@ module FilterForm
|
|
52
53
|
'string/money'
|
53
54
|
when :belongs_to
|
54
55
|
'select/belongs_to'
|
56
|
+
when :select2
|
57
|
+
'select/select2'
|
55
58
|
else
|
56
59
|
_type
|
57
60
|
end
|
@@ -3,16 +3,32 @@ module FilterForm
|
|
3
3
|
class Base
|
4
4
|
include ActiveModel::Model
|
5
5
|
|
6
|
+
INPUT_CLASS = ''
|
7
|
+
|
6
8
|
attr_accessor :attribute_name, :object, :predicate
|
7
9
|
|
8
10
|
def options
|
11
|
+
result = default_options.merge(additional_options)
|
12
|
+
result[:input_html].merge!(additional_input_options)
|
13
|
+
result
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def default_options
|
9
19
|
{
|
10
20
|
required: false,
|
11
21
|
input_html: { name: input_name }
|
12
22
|
}
|
13
23
|
end
|
14
24
|
|
15
|
-
|
25
|
+
def additional_options
|
26
|
+
{}
|
27
|
+
end
|
28
|
+
|
29
|
+
def additional_input_options
|
30
|
+
{ class: self.class::INPUT_CLASS }
|
31
|
+
end
|
16
32
|
|
17
33
|
def input_name
|
18
34
|
"q[#{ attribute_name }_#{ predicate }]"
|
@@ -2,11 +2,7 @@ module FilterForm
|
|
2
2
|
module Inputs
|
3
3
|
module Select
|
4
4
|
class Base < FilterForm::Inputs::Base
|
5
|
-
|
6
|
-
super.merge(additional_options)
|
7
|
-
end
|
8
|
-
|
9
|
-
private
|
5
|
+
private
|
10
6
|
|
11
7
|
def additional_options
|
12
8
|
{
|
@@ -18,7 +14,7 @@ module FilterForm
|
|
18
14
|
end
|
19
15
|
|
20
16
|
def collection
|
21
|
-
|
17
|
+
object.klass.uniq.pluck(attribute_name)
|
22
18
|
end
|
23
19
|
end
|
24
20
|
end
|
@@ -2,18 +2,14 @@ module FilterForm
|
|
2
2
|
module Inputs
|
3
3
|
module String
|
4
4
|
class Base < FilterForm::Inputs::Base
|
5
|
-
|
6
|
-
result = super.merge(as: :string)
|
7
|
-
result[:input_html].merge!(additional_input_options)
|
8
|
-
result
|
9
|
-
end
|
5
|
+
private
|
10
6
|
|
11
|
-
|
7
|
+
def additional_options
|
8
|
+
{ as: :string }
|
9
|
+
end
|
12
10
|
|
13
11
|
def additional_input_options
|
14
|
-
|
15
|
-
value: input_value
|
16
|
-
}
|
12
|
+
super.merge(value: input_value)
|
17
13
|
end
|
18
14
|
end
|
19
15
|
end
|
@@ -2,13 +2,7 @@ module FilterForm
|
|
2
2
|
module Inputs
|
3
3
|
module String
|
4
4
|
class Date < FilterForm::Inputs::String::Base
|
5
|
-
|
6
|
-
|
7
|
-
private
|
8
|
-
|
9
|
-
def additional_input_options
|
10
|
-
super.merge(class: DATE_CLASS)
|
11
|
-
end
|
5
|
+
INPUT_CLASS = 'filter_form_date'
|
12
6
|
end
|
13
7
|
end
|
14
8
|
end
|
data/lib/filter_form/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: filter_form
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Evgeny Li
|
@@ -114,6 +114,7 @@ files:
|
|
114
114
|
- lib/filter_form/inputs/base.rb
|
115
115
|
- lib/filter_form/inputs/select/base.rb
|
116
116
|
- lib/filter_form/inputs/select/belongs_to.rb
|
117
|
+
- lib/filter_form/inputs/select/select2.rb
|
117
118
|
- lib/filter_form/inputs/string/base.rb
|
118
119
|
- lib/filter_form/inputs/string/date.rb
|
119
120
|
- lib/filter_form/inputs/string/money.rb
|