rao-query 0.0.10.pre → 0.0.11.pre

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: fcd71ecb39df9be9f1b4bb16009f9bad6622225b
4
- data.tar.gz: e7c9ff4ed20d98a64a63442101f41f4244339473
3
+ metadata.gz: 701230b194df896ecad0d3c8d97992a780dc2ff4
4
+ data.tar.gz: 2a2f775ffe426e9fb3243703e05e5bfce8cd516c
5
5
  SHA512:
6
- metadata.gz: 6a89c9252f3a47ed943a11519507ce320ea622c726d305316ff29e5736fe4f96d1f861702cb6e571bad7470513743b369cfd99b0b939a72c376c18067351eed1
7
- data.tar.gz: 5f40b638661b73b8898e65495ba9ec08ad89726d090e13ad4a557c4614771f5ad819af21a51d6d9abf7ea6f09ef81eb3e783d5cc732b435edd009303c4b3fbdd
6
+ metadata.gz: 564988704e3c7cab85150fed4d1b0a7828fa474a9e55303a29af16c8aff2bca652569fae5ff59e52990f4e7afd64df19fb72a4e2da39571eede4755a1972e0e6
7
+ data.tar.gz: 99bb315ceba2c7ade86aeb4363d58742760fed756778b857eae74f89f417b0b364f85c004f4d130d0762d88441598e59d43dfe06cc5759c476f98c9418c99223
@@ -0,0 +1,63 @@
1
+ module Rao
2
+ module Query
3
+ class FormBuilder < SimpleForm::FormBuilder
4
+ def boolean(name, options = {})
5
+ translated_label = translate_label_for_boolean(name)
6
+ options.reverse_merge!(collection: [[I18n.t("rao.query.form_builder.yes"), 1], [I18n.t("rao.query.form_builder.no"), 0]], include_blank: true, label: translated_label)
7
+ input name, options
8
+ end
9
+
10
+ def input(name, options = {})
11
+ if association = options.delete(:association)
12
+ translated_label = translate_label(name, association)
13
+ input_name = "#{association}.#{name}"
14
+ else
15
+ translated_label = translate_label(name)
16
+ input_name = name
17
+ end
18
+ super(input_name, options.reverse_merge(label: translated_label))
19
+ end
20
+
21
+ def submit(title = nil, options = {})
22
+ title ||= I18n.t('rao.query.form_builder.submit')
23
+ super(title, options)
24
+ end
25
+
26
+ def reset(title = nil, options = {})
27
+ title ||= I18n.t('rao.query.form_builder.reset')
28
+ link_html = options.delete(:link_html) || {}
29
+ template.link_to(title, template.url_for(), link_html)
30
+ end
31
+
32
+ private
33
+
34
+ def translate_label(name, association = nil)
35
+ splitted_name = name.to_s.split('_')
36
+ attribute_name = splitted_name[0..-2].join('_')
37
+ predicate = splitted_name.last
38
+ translated_attribute_name = if association.nil?
39
+ klass_name = object.original_model_class_name
40
+ klass_name.constantize.human_attribute_name(attribute_name)
41
+ else
42
+ klass_name = object.original_model_class.reflect_on_association(association).klass.name
43
+ klass = klass_name.constantize
44
+ "#{klass.model_name.human} #{klass.human_attribute_name(attribute_name)}"
45
+ end
46
+ I18n.t("rao.query.form_builder.predicates.#{predicate}", attribute_name: translated_attribute_name)
47
+ end
48
+
49
+ def translate_label_for_boolean(name)
50
+ splitted_name = name.to_s.split('_')
51
+ attribute_name = splitted_name[0..-2].join('_')
52
+ predicate = splitted_name.last
53
+ if association.nil?
54
+ klass_name = object.original_model_class_name
55
+ else
56
+ klass_name = object.original_model_class.reflect_on_association(association).klass
57
+ end
58
+ translated_attribute_name = klass_name.constantize.human_attribute_name(attribute_name)
59
+ I18n.t("rao.query.form_builder.boolean_label", attribute_name: translated_attribute_name)
60
+ end
61
+ end
62
+ end
63
+ end
@@ -14,6 +14,7 @@ module Rao
14
14
  #
15
15
  # # app/views/posts/index.html.haml
16
16
  # = query_helper(self).form_for(@posts, url: posts_path, method: :get) do |f|
17
+ # = f.input :email_cont, association: :author
17
18
  # = f.input :title_cont
18
19
  # = f.input :body_cont
19
20
  # = f.boolean :published_eq
@@ -34,67 +35,7 @@ module Rao
34
35
  def form_for(collection, options = {}, &block)
35
36
  handle_simple_form_missing unless c.respond_to?(:simple_form_for)
36
37
  wrapped_collection = SearchableCollection.new(collection, c.params[:q])
37
- c.simple_form_for(wrapped_collection, options.reverse_merge(as: :q, url: c.collection_path, method: :get, builder: SearchFormBuilder), &block)
38
- end
39
-
40
- class SearchFormBuilder < SimpleForm::FormBuilder
41
- def boolean(name, options = {})
42
- translated_label = translate_label_for_boolean(name)
43
- options.reverse_merge!(collection: [[I18n.t("search_form_builder.yes"), 1], [I18n.t("search_form_builder.no"), 0]], include_blank: true, label: translated_label)
44
- input name, options
45
- end
46
-
47
- def input(name, options = {})
48
- if association = options.delete(:association)
49
- translated_label = translate_label(name, association)
50
- input_name = "#{association}.#{name}"
51
- else
52
- translated_label = translate_label(name)
53
- input_name = name
54
- end
55
- super(input_name, options.reverse_merge(label: translated_label))
56
- end
57
-
58
- def submit(title = nil, options = {})
59
- title ||= I18n.t('search_form_builder.submit')
60
- super(title, options)
61
- end
62
-
63
- def reset(title = nil, options = {})
64
- title ||= I18n.t('search_form_builder.reset')
65
- link_html = options.delete(:link_html) || {}
66
- template.link_to(title, template.url_for(), link_html)
67
- end
68
-
69
- private
70
-
71
- def translate_label(name, association = nil)
72
- splitted_name = name.to_s.split('_')
73
- attribute_name = splitted_name[0..-2].join('_')
74
- predicate = splitted_name.last
75
- translated_attribute_name = if association.nil?
76
- klass_name = object.original_model_class_name
77
- klass_name.constantize.human_attribute_name(attribute_name)
78
- else
79
- klass_name = object.original_model_class.reflect_on_association(association).klass.name
80
- klass = klass_name.constantize
81
- "#{klass.model_name.human} #{klass.human_attribute_name(attribute_name)}"
82
- end
83
- I18n.t("search_form_builder.predicates.#{predicate}", attribute_name: translated_attribute_name)
84
- end
85
-
86
- def translate_label_for_boolean(name)
87
- splitted_name = name.to_s.split('_')
88
- attribute_name = splitted_name[0..-2].join('_')
89
- predicate = splitted_name.last
90
- if association.nil?
91
- klass_name = object.original_model_class_name
92
- else
93
- klass_name = object.original_model_class.reflect_on_association(association).klass
94
- end
95
- translated_attribute_name = klass_name.constantize.human_attribute_name(attribute_name)
96
- I18n.t("search_form_builder.boolean_label", attribute_name: translated_attribute_name)
97
- end
38
+ c.simple_form_for(wrapped_collection, options.reverse_merge(as: :q, url: c.collection_path, method: :get, builder: Rao::Query::FormBuilder), &block)
98
39
  end
99
40
 
100
41
  class SearchableCollection
@@ -0,0 +1,7 @@
1
+ de:
2
+ rao:
3
+ query:
4
+ form_builder:
5
+ predicates:
6
+ cont: "%{attribute_name} enthält"
7
+ eq: "%{attribute_name} ist"
@@ -0,0 +1,7 @@
1
+ en:
2
+ rao:
3
+ query:
4
+ form_builder:
5
+ predicates:
6
+ cont: "%{attribute_name} contains"
7
+ eq: "%{attribute_name} equals"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rao-query
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.10.pre
4
+ version: 0.0.11.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roberto Vasquez Angel
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-02-01 00:00:00.000000000 Z
11
+ date: 2019-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -134,8 +134,11 @@ files:
134
134
  - Rakefile
135
135
  - app/concerns/rao/query/controller/query_concern.rb
136
136
  - app/concerns/rao/query/controller/query_form_concern.rb~
137
+ - app/form_builders/rao/query/form_builder.rb
137
138
  - app/parsers/rao/query/condition_parser.rb
138
139
  - app/view_helpers/rao/query/application_helper.rb
140
+ - config/locales/de.yml
141
+ - config/locales/en.yml
139
142
  - lib/rao-query.rb
140
143
  - lib/rao/query.rb
141
144
  - lib/rao/query/configuration.rb