cm-admin 1.3.6 → 1.3.8

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
  SHA256:
3
- metadata.gz: 6181e94f36f08555c2209adfc3e17dbf1da4d551262522a3864acf5a07404e23
4
- data.tar.gz: f1a409a00b8c1b91b70c1554243fdd52ea7c085658d52abd263cbd8a72e178ff
3
+ metadata.gz: daef9070df3c1b70c91fb2c0457c5564eb6de2c182156e6d73f5366a090f0787
4
+ data.tar.gz: 803d75ad103de15770a1f9d7d97db77948ca0bc34260e139378a0484f502282b
5
5
  SHA512:
6
- metadata.gz: 6c06b41f043ac408e4c57cb71b0e939f425a39d2a1cd6e0368f2d5ed993f8c844aaa73df3d1ad67774cc4acde4956fc4f9bcee68401a6595f9f9ed00d441e40b
7
- data.tar.gz: 71345aae21c3e87adb2ce4439c8526b2ac53d9227808168e530acec22b03388b79ae8b10ece5a33a1a096ce85299091acedb6b9cc2663478065611c8b47bc5cd
6
+ metadata.gz: dfce493cbe0f87ed3290ab08799b3d286445fd260fe0faaa4e65383d09a3627e1d4df4627570847e3a6a03236ed3b7511fb1f47dee75b16c7c4a446ead34cfcd
7
+ data.tar.gz: 6d991b7f5ce9596ec6cdbfb91b49f62b66d638201fe8ba3a931d89e99495ec514fa251e67411aa9315ebc372d0bb0233590fc7522ca363846a3ccb1cf6b14e26
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.8)
5
5
  caxlsx_rails
6
6
  cocoon (~> 1.2.15)
7
7
  csv-importer (~> 0.8.2)
@@ -1,6 +1,6 @@
1
1
  .entity-header
2
2
  .entity-header__info
3
- - if cm_admin.method_defined?(:"#{@model.name.underscore}_index_path") && (@model.current_action.name == 'show' || @model.current_action.layout_type.present?)
3
+ - if cm_admin.method_defined?(:"#{@model.name.underscore}_index_path") && (@model.current_action.name == 'show'|| @model.current_action.name == 'history' || @model.current_action.layout_type.present?)
4
4
  .breadcrumb
5
5
  = link_to "#{@model.name.titleize.pluralize} /", cm_admin.send(:"#{@model.name.underscore}_index_path"), class: 'text-reset'
6
6
  h4 = action_title
@@ -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.8'
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.8
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-17 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails