auto_select2 0.5.3 → 0.5.4

Sign up to get free protection for your applications and to get access to all the features.
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.