cm-admin 1.3.6 → 1.3.7

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
  SHA256:
3
- metadata.gz: 6181e94f36f08555c2209adfc3e17dbf1da4d551262522a3864acf5a07404e23
4
- data.tar.gz: f1a409a00b8c1b91b70c1554243fdd52ea7c085658d52abd263cbd8a72e178ff
3
+ metadata.gz: ac0b46b59a37aa14513ffd40ca2ba413b13887638078d237f7984e57775f44a2
4
+ data.tar.gz: 2447f380415e9ee56eea95c349c44ad0184afa22b346a75f9ea27b68b6057e98
5
5
  SHA512:
6
- metadata.gz: 6c06b41f043ac408e4c57cb71b0e939f425a39d2a1cd6e0368f2d5ed993f8c844aaa73df3d1ad67774cc4acde4956fc4f9bcee68401a6595f9f9ed00d441e40b
7
- data.tar.gz: 71345aae21c3e87adb2ce4439c8526b2ac53d9227808168e530acec22b03388b79ae8b10ece5a33a1a096ce85299091acedb6b9cc2663478065611c8b47bc5cd
6
+ metadata.gz: a10b1b77856006ef36af25065fdf8e192609707794ec5c4d335871608404f61a617403ae5c2bf89e8e1ae5b9267837ac134fc000282db55dce098f08b881a1a7
7
+ data.tar.gz: 317b10e4376033e39a3d72cf5f62c60434128996847a625d9d6aadcd77c37f3c3772fe7499e2ed1cd13dabb8a41515cac08c4c117becfd604ecc94feb2fb28be
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cm-admin (1.3.6)
4
+ cm-admin (1.3.7)
5
5
  caxlsx_rails
6
6
  cocoon (~> 1.2.15)
7
7
  csv-importer (~> 0.8.2)
@@ -5,7 +5,7 @@ module CmAdmin
5
5
  class Filter
6
6
  include Utils::Helpers
7
7
 
8
- attr_accessor :db_column_name, :filter_type, :placeholder, :collection
8
+ attr_accessor :db_column_name, :filter_type, :placeholder, :collection, :filter_with
9
9
 
10
10
  VALID_FILTER_TYPES = Set[:date, :multi_select, :range, :search, :single_select].freeze
11
11
 
@@ -14,6 +14,7 @@ module CmAdmin
14
14
  raise ArgumentError, "Kindly select a valid filter type like #{VALID_FILTER_TYPES.sort.to_sentence(last_word_connector: ', or ')} instead of #{filter_type} for column #{db_column_name}" unless VALID_FILTER_TYPES.include?(filter_type.to_sym)
15
15
 
16
16
  @db_column_name, @filter_type = structure_data(db_column_name, filter_type)
17
+ @filter_with = nil
17
18
  set_default_values
18
19
  options.each do |key, value|
19
20
  send("#{key}=", value)
@@ -52,7 +53,7 @@ module CmAdmin
52
53
  def filtered_data(filter_params, records, filters)
53
54
  if filter_params
54
55
  filter_params.each do |scope_type, scope_value|
55
- scope_name = case scope_type
56
+ filter_method = case scope_type
56
57
  when 'date', 'range'
57
58
  'date_and_range'
58
59
  when 'single_select', 'multi_select'
@@ -60,7 +61,7 @@ module CmAdmin
60
61
  else
61
62
  scope_type
62
63
  end
63
- records = send("cm_#{scope_name}_filter", scope_value, records, filters) if scope_value.present?
64
+ records = send("cm_#{filter_method}_filter", scope_value, records, filters) if scope_value.present?
64
65
  end
65
66
  end
66
67
  records
@@ -71,52 +72,63 @@ module CmAdmin
71
72
 
72
73
  table_name = records.table_name
73
74
  filters.select { |x| x if x.filter_type.eql?(:search) }.each do |filter|
74
- query_variables = []
75
- filter.db_column_name.each do |col|
76
- case col
77
- when Symbol
78
- query_variables << "#{table_name.pluralize}.#{col}"
79
- when Hash
80
- col.map do |key, value|
81
- value.map { |val| query_variables << "#{key.to_s.pluralize}.#{val}" }
75
+ if filter.filter_with.present?
76
+ return records.send(filter.filter_with, scope_value)
77
+ else
78
+ query_variables = []
79
+ filter.db_column_name.each do |col|
80
+ case col
81
+ when Symbol
82
+ query_variables << "#{table_name.pluralize}.#{col}"
83
+ when Hash
84
+ col.map do |key, value|
85
+ value.map { |val| query_variables << "#{key.to_s.pluralize}.#{val}" }
86
+ end
82
87
  end
83
88
  end
84
- end
85
- terms = scope_value.downcase.split(/\s+/)
86
- terms = terms.map { |e|
87
- (e.gsub('*', '%').prepend('%') + '%').gsub(/%+/, '%')
88
- }
89
- sql = ''
90
- query_variables.each.with_index do |column, i|
91
- sql.concat("#{column} ILIKE ?")
92
- sql.concat(' OR ') unless query_variables.size.eql?(i + 1)
93
- end
89
+ terms = scope_value.downcase.split(/\s+/)
90
+ terms = terms.map { |e|
91
+ (e.gsub('*', '%').prepend('%') + '%').gsub(/%+/, '%')
92
+ }
93
+ sql = ''
94
+ query_variables.each.with_index do |column, i|
95
+ sql.concat("#{column} ILIKE ?")
96
+ sql.concat(' OR ') unless query_variables.size.eql?(i + 1)
97
+ end
94
98
 
95
- if filter.db_column_name.map { |x| x.is_a?(Hash) }.include?(true)
96
- associations_hash = filter.db_column_name.select { |x| x if x.is_a?(Hash) }.last
97
- records = records.left_joins(associations_hash.keys).distinct
98
- end
99
+ if filter.db_column_name.map { |x| x.is_a?(Hash) }.include?(true)
100
+ associations_hash = filter.db_column_name.select { |x| x if x.is_a?(Hash) }.last
101
+ records = records.left_joins(associations_hash.keys).distinct
102
+ end
99
103
 
100
- records = records.where(
101
- terms.map { |term|
102
- sql
103
- }.join(' AND '),
104
- *terms.map { |e| [e] * query_variables.size }.flatten
105
- )
104
+ records = records.where(
105
+ terms.map { |term|
106
+ sql
107
+ }.join(' AND '),
108
+ *terms.map { |e| [e] * query_variables.size }.flatten
109
+ )
110
+ return records
111
+ end
106
112
  end
107
- records
108
113
  end
109
114
 
110
115
  def cm_date_and_range_filter(scope_value, records, filters)
111
116
  return nil if scope_value.nil?
112
117
 
113
118
  scope_value.each do |key, value|
114
- next unless value.present?
119
+ filters.select { |x| x if [:date, :range].include?(x.filter_type) && x.db_column_name.to_s == key.to_s }.each do |filter|
120
+
121
+ next unless value.present?
115
122
 
116
- value = value.split(' to ')
117
- from = value[0].presence
118
- to = value[1].presence
119
- records = records.where(key => from..to)
123
+ value = value.split(' to ')
124
+ from = value[0].presence
125
+ to = value[1].presence
126
+ if filter.filter_with.present?
127
+ records = records.send(filter.filter_with, from, to)
128
+ else
129
+ records = records.where(key => from..to)
130
+ end
131
+ end
120
132
  end
121
133
  records
122
134
  end
@@ -125,7 +137,13 @@ module CmAdmin
125
137
  return nil if scope_value.nil?
126
138
 
127
139
  scope_value.each do |key, value|
128
- records = records.where(key => value) if value.present?
140
+ filters.select { |x| x if [:single_select, :multi_select].include?(x.filter_type) && x.db_column_name.to_s == key.to_s }.each do |filter|
141
+ if filter.filter_with.present?
142
+ records = records.send(filter.filter_with, value) if value.present?
143
+ else
144
+ records = records.where(key => value) if value.present?
145
+ end
146
+ end
129
147
  end
130
148
  records
131
149
  end
@@ -1,3 +1,3 @@
1
1
  module CmAdmin
2
- VERSION = '1.3.6'
2
+ VERSION = '1.3.7'
3
3
  end
@@ -33,7 +33,7 @@ module CmAdmin
33
33
  concat(content_tag(:div, class: 'list-area') do
34
34
  filters.each do |filter|
35
35
  concat(content_tag(:div, class: 'pointer list-item', data: {behaviour: 'filter-option', filter_type: "#{filter.filter_type}", db_column: "#{filter.db_column_name}"}) do
36
- tag.span filter.db_column_name.to_s.titleize
36
+ tag.span filter.placeholder.to_s.titleize
37
37
  end)
38
38
  end
39
39
  end)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cm-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.6
4
+ version: 1.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - sajinmp
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: exe
12
12
  cert_chain: []
13
- date: 2023-11-10 00:00:00.000000000 Z
13
+ date: 2023-11-15 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails