auto_select2 0.5.3 → 0.5.4

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: b9fa47b66a59a070e74887952d34731a09e92e98
4
- data.tar.gz: 0b6f22ea5f73d56b4e8428745a641c90888dc9e0
3
+ metadata.gz: 4f1c055e2012182da247df66908f6fdf0e6f951a
4
+ data.tar.gz: f44e5ae3cce3f1a19d5b522ad25b738552e03df2
5
5
  SHA512:
6
- metadata.gz: 3c4a681e0dbc73ee2ae09eb2314edb0fc4706eec0186bdf4ad8a9b310afb264f9a4e8b766f5284b5a358b060c396e74d7a1491b9411943207ce70f8014840ebb
7
- data.tar.gz: 53846bfbc7bfd9f5c649a197248adae98bf1735128304f01204077e74b4e91df237b232602c417d071815cfc82b457b6e6d817e30d34f5a1b20b677ef6738d1c
6
+ metadata.gz: 022f35da345225b0559ccfbc85490df14f858fa76a20690e044fd7d3090f6b6d66b0a180134856f807711f25656a105c482d1f30287160b05d4d7d2ba4d75a25
7
+ data.tar.gz: 115d3fd414588db14f967cb5395206c68cca1b163efda0454780918ac5e43c4fc8e26fd5e2a1250e2abec5c12e4daae80e6bcac249945bc365aa9eb515bb3d9b
@@ -6,7 +6,8 @@ module AutoSelect2
6
6
  app.config.assets.precompile +=
7
7
  %w(auto_select2/ajax_select2.js
8
8
  auto_select2/multi_ajax_select2_value_parser.js
9
- auto_select2/static_select2.js)
9
+ auto_select2/static_select2.js
10
+ auto_select2/custom_select2.js)
10
11
  end
11
12
  end
12
13
  end
@@ -15,6 +15,13 @@ module AutoSelect2
15
15
  end
16
16
  end
17
17
 
18
+ def custom_select2_init_header_tags
19
+ unless @select2_custom_script_included
20
+ @select2_custom_script_included = true
21
+ javascript_include_tag('auto_select2/custom_select2')
22
+ end
23
+ end
24
+
18
25
  def static_select2_init_header_tags
19
26
  unless @select2_static_script_included
20
27
  @select2_static_script_included = true
@@ -19,7 +19,11 @@ module AutoSelect2
19
19
 
20
20
  def default_finder(searched_class, term, options)
21
21
  columns = options[:column].present? ? options[:column] : 'name'
22
- conditions = default_search_conditions(term, options[:basic_conditions], columns)
22
+ conditions =
23
+ default_search_conditions(term,
24
+ options[:basic_conditions],
25
+ columns,
26
+ options.slice(:case_sensitive))
23
27
  if term.nil?
24
28
  [ searched_class.where(options[:basic_conditions]) ]
25
29
  else
@@ -35,14 +39,18 @@ module AutoSelect2
35
39
  end
36
40
 
37
41
  def default_count(searched_class, term, options = {})
38
- conditions = default_search_conditions(term, options[:basic_conditions], options[:column] || 'name')
42
+ conditions =
43
+ default_search_conditions(term,
44
+ options[:basic_conditions],
45
+ options[:column] || 'name',
46
+ options.slice(:case_sensitive))
39
47
  query = searched_class.where(conditions)
40
48
  query = query.select(options[:select]) if options[:select].present?
41
49
  query = options[:uniq] ? query.uniq : query
42
50
  query.count
43
51
  end
44
52
 
45
- def default_search_conditions(term, basic_conditions, columns)
53
+ def default_search_conditions(term, basic_conditions, columns, options = {})
46
54
  term_filter = ''
47
55
  conditions = []
48
56
  unless columns.is_a?(Array)
@@ -50,13 +58,20 @@ module AutoSelect2
50
58
  end
51
59
  unless term.nil?
52
60
  words = term.split(' ')
61
+ # @ todo: needs to create arrays with conditions for words and columns and concatenate them in a properly way
53
62
  words.each_with_index do |word, index|
54
63
  term_filter += ' AND ' if index > 0
64
+ term_filter += '( ' if columns.any?
55
65
  columns.each_with_index do |column, idx|
56
66
  term_filter += ' OR ' if idx > 0
57
- term_filter += "#{column} LIKE ?"
67
+ if options[:case_sensitive]
68
+ term_filter += "#{column} LIKE ?"
69
+ else
70
+ term_filter += "LOWER(#{column}) LIKE LOWER(?)"
71
+ end
58
72
  conditions << "%#{word}%"
59
73
  end
74
+ term_filter += ' )' if columns.any?
60
75
  end
61
76
  term_filter = term_filter.empty? ? nil : "(#{term_filter})"
62
77
  basic_conditions_part = basic_conditions.present? ? "(#{basic_conditions }) " : nil
@@ -3,12 +3,21 @@ module AutoSelect2
3
3
  class Default < Base
4
4
  class << self
5
5
  def search_default(term, page, options)
6
- if @searchable_class.blank? || @id_column.blank? || @text_columns.blank?
6
+ if !@searchable_class || @id_column.blank? || @text_columns.blank?
7
7
  raise_not_implemented
8
8
  end
9
9
  if options[:init].nil?
10
- default_values = default_finder(@searchable_class, term, page: page, column: @text_columns)
11
- default_count = default_count(@searchable_class, term, column: @text_columns)
10
+ default_values =
11
+ default_finder(@searchable_class,
12
+ term,
13
+ page: page,
14
+ column: @text_columns,
15
+ case_sensitive: @case_sensitive.nil? ? options[:case_sensitive] : @case_sensitive)
16
+ total_count =
17
+ default_count(@searchable_class,
18
+ term,
19
+ column: @text_columns,
20
+ case_sensitive: @case_sensitive.nil? ? options[:case_sensitive] : @case_sensitive)
12
21
  {
13
22
  items: default_values.map do |default_value|
14
23
  get_select2_hash(
@@ -18,7 +27,7 @@ module AutoSelect2
18
27
  @text_columns
19
28
  )
20
29
  end,
21
- total: default_count
30
+ total: total_count
22
31
  }
23
32
  else
24
33
  options[:id_column] = @id_column
@@ -49,6 +58,10 @@ module AutoSelect2
49
58
  @select2_hash_method = method_sym
50
59
  end
51
60
 
61
+ def case_sensitive(casi)
62
+ @case_sensitive = casi
63
+ end
64
+
52
65
  def raise_not_implemented
53
66
  raise NotImplementedError,
54
67
  'You need to implement your own SearchAdapter. Use: `rails generate auto_select2:search_adapter`'
@@ -1,3 +1,3 @@
1
1
  module AutoSelect2
2
- VERSION = '0.5.3'
2
+ VERSION = '0.5.4'
3
3
  end
@@ -22,6 +22,10 @@ module AutoSelect2
22
22
  type: :string,
23
23
  desc: 'Instance method of model for converting into Hash for transporting into select2',
24
24
  banner: 'to_select2'
25
+ class_option :case_sensitive,
26
+ type: :boolean,
27
+ desc: 'Is adapter request case sensitive or not',
28
+ banner: 'case_sensitive'
25
29
 
26
30
  desc 'Creates SearchAdapter classes for your models'
27
31
  def create_search_adapter
@@ -48,6 +52,10 @@ module AutoSelect2
48
52
  def hash_method
49
53
  options[:hash_method]
50
54
  end
55
+
56
+ def case_sensitive
57
+ options[:case_sensitive]
58
+ end
51
59
  end
52
60
  end
53
61
  end
@@ -3,4 +3,5 @@ class <%= name.classify %>SearchAdapter < AutoSelect2::Select2SearchAdapter::Def
3
3
  id_column :<%= id_column %>
4
4
  text_columns <%= text_columns.join(', ') %>
5
5
  <% if hash_method.present? %>hash_method :<%= hash_method %><% end %>
6
+ <% if case_sensitive.present? %>case_sensitive <%= case_sensitive %><% end %>
6
7
  end
@@ -126,12 +126,12 @@ jQuery ($) ->
126
126
  return
127
127
  initAutoAjaxSelect2()
128
128
 
129
- $body = $('body')
130
- $body.on 'ajaxSuccess', ->
129
+ $document = $(document)
130
+ $document.on 'ajaxSuccess', ->
131
131
  initAutoAjaxSelect2()
132
132
  return
133
133
 
134
- $body.on 'cocoon:after-insert', ->
134
+ $document.on 'cocoon:after-insert', ->
135
135
  initAutoAjaxSelect2()
136
136
  return
137
137
  return
@@ -0,0 +1,14 @@
1
+ jQuery ($) ->
2
+ window.initAutoCustomSelect2 = ->
3
+ $('input.auto-custom-select2').not('.select2-offscreen').each ->
4
+ $input = $(this)
5
+
6
+ s2Options = $input.data("s2-options")
7
+ if s2Options != undefined
8
+ $input.select2(s2Options)
9
+ return
10
+ return
11
+
12
+ initAutoCustomSelect2()
13
+
14
+ return
@@ -18,12 +18,12 @@ jQuery ($) ->
18
18
  initAutoDataSelect2()
19
19
 
20
20
 
21
- $body = $('body')
22
- $body.on 'ajaxSuccess', ->
21
+ $document = $(document)
22
+ $document.on 'ajaxSuccess', ->
23
23
  initAutoDataSelect2()
24
24
  return
25
25
 
26
- $body.on 'cocoon:after-insert', ->
26
+ $document.on 'cocoon:after-insert', ->
27
27
  initAutoDataSelect2()
28
28
  return
29
29
  return
@@ -19,12 +19,12 @@ jQuery ($) ->
19
19
  return
20
20
  initAutoStaticSelect2()
21
21
 
22
- $body = $('body')
23
- $body.on 'ajaxSuccess', ->
22
+ $document = $(document)
23
+ $document.on 'ajaxSuccess', ->
24
24
  initAutoStaticSelect2()
25
25
  return
26
26
 
27
- $body.on 'cocoon:after-insert', ->
27
+ $document.on 'cocoon:after-insert', ->
28
28
  initAutoStaticSelect2()
29
29
  return
30
30
  return
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: auto_select2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitriy Lisichkin
@@ -9,90 +9,90 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-12 00:00:00.000000000 Z
12
+ date: 2016-09-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: railties
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - '>='
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '3.1'
21
21
  type: :runtime
22
22
  prerelease: false
23
23
  version_requirements: !ruby/object:Gem::Requirement
24
24
  requirements:
25
- - - '>='
25
+ - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: '3.1'
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: select2-rails
30
30
  requirement: !ruby/object:Gem::Requirement
31
31
  requirements:
32
- - - '>='
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: '0'
35
35
  type: :runtime
36
36
  prerelease: false
37
37
  version_requirements: !ruby/object:Gem::Requirement
38
38
  requirements:
39
- - - '>='
39
+ - - ">="
40
40
  - !ruby/object:Gem::Version
41
41
  version: '0'
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: coffee-rails
44
44
  requirement: !ruby/object:Gem::Requirement
45
45
  requirements:
46
- - - '>='
46
+ - - ">="
47
47
  - !ruby/object:Gem::Version
48
48
  version: '0'
49
49
  type: :runtime
50
50
  prerelease: false
51
51
  version_requirements: !ruby/object:Gem::Requirement
52
52
  requirements:
53
- - - '>='
53
+ - - ">="
54
54
  - !ruby/object:Gem::Version
55
55
  version: '0'
56
56
  - !ruby/object:Gem::Dependency
57
57
  name: bundler
58
58
  requirement: !ruby/object:Gem::Requirement
59
59
  requirements:
60
- - - ~>
60
+ - - "~>"
61
61
  - !ruby/object:Gem::Version
62
62
  version: '1.5'
63
63
  type: :development
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
66
66
  requirements:
67
- - - ~>
67
+ - - "~>"
68
68
  - !ruby/object:Gem::Version
69
69
  version: '1.5'
70
70
  - !ruby/object:Gem::Dependency
71
71
  name: rake
72
72
  requirement: !ruby/object:Gem::Requirement
73
73
  requirements:
74
- - - '>='
74
+ - - ">="
75
75
  - !ruby/object:Gem::Version
76
76
  version: '0'
77
77
  type: :development
78
78
  prerelease: false
79
79
  version_requirements: !ruby/object:Gem::Requirement
80
80
  requirements:
81
- - - '>='
81
+ - - ">="
82
82
  - !ruby/object:Gem::Version
83
83
  version: '0'
84
84
  - !ruby/object:Gem::Dependency
85
85
  name: rails
86
86
  requirement: !ruby/object:Gem::Requirement
87
87
  requirements:
88
- - - ~>
88
+ - - "~>"
89
89
  - !ruby/object:Gem::Version
90
90
  version: 3.2.12
91
91
  type: :development
92
92
  prerelease: false
93
93
  version_requirements: !ruby/object:Gem::Requirement
94
94
  requirements:
95
- - - ~>
95
+ - - "~>"
96
96
  - !ruby/object:Gem::Version
97
97
  version: 3.2.12
98
98
  description: |2
@@ -106,8 +106,8 @@ executables: []
106
106
  extensions: []
107
107
  extra_rdoc_files: []
108
108
  files:
109
- - .gitignore
110
- - .gitmodules
109
+ - ".gitignore"
110
+ - ".gitmodules"
111
111
  - Gemfile
112
112
  - LICENSE.txt
113
113
  - README.md
@@ -126,6 +126,7 @@ files:
126
126
  - lib/generators/auto_select2/search_adapter_generator.rb
127
127
  - lib/generators/auto_select2/templates/search_adapter.rb.erb
128
128
  - vendor/assets/javascripts/auto_select2/ajax_select2.js.coffee
129
+ - vendor/assets/javascripts/auto_select2/custom_select2.coffee
129
130
  - vendor/assets/javascripts/auto_select2/data_select2.js.coffee
130
131
  - vendor/assets/javascripts/auto_select2/multi_ajax_select2_value_parser.js.coffee
131
132
  - vendor/assets/javascripts/auto_select2/static_select2.js.coffee
@@ -139,17 +140,17 @@ require_paths:
139
140
  - lib
140
141
  required_ruby_version: !ruby/object:Gem::Requirement
141
142
  requirements:
142
- - - '>='
143
+ - - ">="
143
144
  - !ruby/object:Gem::Version
144
145
  version: '0'
145
146
  required_rubygems_version: !ruby/object:Gem::Requirement
146
147
  requirements:
147
- - - '>='
148
+ - - ">="
148
149
  - !ruby/object:Gem::Version
149
150
  version: '0'
150
151
  requirements: []
151
152
  rubyforge_project:
152
- rubygems_version: 2.4.8
153
+ rubygems_version: 2.5.1
153
154
  signing_key:
154
155
  specification_version: 4
155
156
  summary: Base methods for wrapping a Select2 and easy initialize it.