filter_form 0.3.6 → 0.4.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: de52ff4dcefee188a2c1d139f5e27afde3980718
4
- data.tar.gz: f99e98e31a17545668f9b08a9a8e491b43912174
3
+ metadata.gz: 978b3ad1c97b1aba6b76e8880fa080108b5c9690
4
+ data.tar.gz: e4b7527a7625e13362064dcc1934203efe1c9ac7
5
5
  SHA512:
6
- metadata.gz: 7a3e203a07a1cb7c2f160877831cadea8812f14221756db54b6c7540e744e1c61ea3ae6991e5606594fc7291b92ad1973f62a144944b228fa0cc28737e72f134
7
- data.tar.gz: b362914fb99e373c758da55220a280f625c2944e1d80b08233aed3548156cf34fe5eec9b606a7dd51108e167af593fac699ea20729d37f2cbf743e4f13894f14
6
+ metadata.gz: b9092311064803c9b527109ba1e2194c4bb38c2f9870564723d7daad1509a72e8419380a583130a0292343846536795cf4bd44c21cdbe03a0c0ed1269c38bb0c
7
+ data.tar.gz: 80c5249be7a0d51c7d814b25d2bc6ec833457d5849cfe54d0b8ce5a48bdd3d98ec4af3a040ca083e2607fe929ecb1936cfe0d9655f4916e151a50a679271bdd1
data/README.md CHANGED
@@ -55,16 +55,7 @@ In your view file:
55
55
 
56
56
  ### Customization
57
57
 
58
- Of course you can customize your filter, like:
59
-
60
- ```erb
61
- <%= filter_form_for @q do |f| %>
62
- <%= f.filter_input :id, with: :predicate_selector # will add select to change predicates in your form %>
63
- <%= f.filter_input :title, as: :select, in: :select2 # wraps select in select2 %>
64
- <%= f.filter_input :year, as: :select, collection: (2000..2013).to_a, predicate: :not_eq %>
65
- <%= f.button :submit %>
66
- <% end %>
67
- ```
58
+ #### Assets
68
59
 
69
60
  If you want to use jQuery [Datepicker](http://jqueryui.com/datepicker/) for `date` and `datetime` automatically or [Select2](http://ivaynberg.github.io/select2/), add to your application.js file:
70
61
 
@@ -85,6 +76,37 @@ And application.css:
85
76
  *= require filter_form
86
77
  ```
87
78
 
79
+ #### Custom predicate
80
+
81
+ ```erb
82
+ <%= filter_form_for @q do |f| %>
83
+ <%= f.filter_input :year, as: :select, collection: (2000..2013).to_a, predicate: :not_eq %>
84
+ <%= f.button :submit %>
85
+ <% end %>
86
+ ```
87
+
88
+ #### Select2
89
+
90
+ You can wrap your select in `select2`:
91
+
92
+ ```erb
93
+ <%= filter_form_for @q do |f| %>
94
+ <%= f.filter_input :title, as: :select, in: :select2 %>
95
+ <%= f.button :submit %>
96
+ <% end %>
97
+ ```
98
+
99
+ #### Predicate selector
100
+
101
+ You can show predicate selector:
102
+
103
+ ```erb
104
+ <%= filter_form_for @q do |f| %>
105
+ <%= f.filter_input :id, predicate_selector: [['=', 'eq'], ['>', 'gt'], ['<', 'lt']] %>
106
+ <%= f.button :submit %>
107
+ <% end %>
108
+ ```
109
+
88
110
  ### Other sources
89
111
 
90
112
  For more information about predicates visit [ransack](https://github.com/ernie/ransack).
@@ -1,17 +1,13 @@
1
1
  class PredicateSelector
2
+ @CLASS_NAME: 'predicate_selector'
3
+
2
4
  _select: null
3
5
 
4
- _predicates: [
5
- { name: '=', value: 'eq' },
6
- { name: '>', value: 'gt' },
7
- { name: '<', value: 'lt' }
8
- ]
6
+ _predicates: ->
7
+ JSON.parse($(@element).attr(@constructor.element_for_attribute()))
9
8
 
10
9
  @element_for_attribute: ->
11
- { name: 'with', value: 'predicate_selector' }
12
-
13
- @class_name: ->
14
- 'predicate_selector'
10
+ 'data-predicate-selector'
15
11
 
16
12
  constructor: (@element) ->
17
13
  @insert_selector()
@@ -19,9 +15,9 @@ class PredicateSelector
19
15
  @set_current_predicate()
20
16
 
21
17
  insert_selector: ->
22
- @_select = $("<select for='#{ $(@element).attr('id') }' class='#{ @constructor.class_name() }'><select>")
23
- for predicate in @_predicates
24
- $(@_select).append("<option value='#{ predicate.name }'>#{ predicate.name }</option>")
18
+ @_select = $("<select for='#{ $(@element).attr('id') }' class='#{ @constructor.CLASS_NAME }'><select>")
19
+ for predicate in @_predicates()
20
+ $(@_select).append("<option value='#{ predicate[0] }'>#{ predicate[0] }</option>")
25
21
  $(@_select).insertBefore(@element)
26
22
 
27
23
  set_onchange_listener: ->
@@ -31,25 +27,25 @@ class PredicateSelector
31
27
  self.set_name_to_element(predicate)
32
28
 
33
29
  set_name_to_element: (predicate) ->
34
- new_name = "q[#{ $(@element).attr('id').replace('q_', '') }_#{ predicate.value }]"
30
+ new_name = "q[#{ $(@element).attr('id').replace('q_', '') }_#{ predicate[1] }]"
35
31
  $(@element).attr('name', new_name)
36
32
 
37
33
  find_predicate_by_name: (name) ->
38
- for predicate in @_predicates
39
- return predicate if predicate.name is name
34
+ for predicate in @_predicates()
35
+ return predicate if predicate[0] is name
40
36
 
41
37
  set_current_predicate: ->
42
38
  if @current_predicate()
43
- $(@_select).val(@current_predicate().name).change()
39
+ $(@_select).val(@current_predicate()[0]).change()
44
40
 
45
41
  current_predicate: ->
46
- for predicate in @_predicates
47
- return predicate if predicate.value is $(@element).data('current-predicate')
42
+ for predicate in @_predicates()
43
+ return predicate if predicate[1] is $(@element).data('current-predicate')
48
44
 
49
45
  ###############################################################################
50
46
 
51
47
  $ ->
52
- for element in $("[data-#{ PredicateSelector.element_for_attribute().name }='#{ PredicateSelector.element_for_attribute().value }']")
48
+ for element in $("[#{ PredicateSelector.element_for_attribute() }]")
53
49
  new PredicateSelector(element)
54
50
 
55
51
  $('.filter_form_select2').select2()
@@ -25,9 +25,9 @@ module FilterForm
25
25
  def additional_input_options
26
26
  result = { name: input_name, data: {} }
27
27
 
28
- result[:class] = input_class if input_class
29
- result[:data][:with] = options[:with] if options[:with]
30
- result[:data][:current_predicate] = current_predicate if current_predicate
28
+ result[:class] = input_class if input_class
29
+ result[:data][:predicate_selector] = options[:predicate_selector] if options[:predicate_selector]
30
+ result[:data][:current_predicate] = current_predicate if current_predicate
31
31
 
32
32
  result
33
33
  end
@@ -1,3 +1,3 @@
1
1
  module FilterForm
2
- VERSION = '0.3.6'
2
+ VERSION = '0.4.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: filter_form
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evgeny Li
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-11-18 00:00:00.000000000 Z
11
+ date: 2013-11-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: simple_form