cm-admin 1.3.4 → 1.3.5

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: 8d8b59bb29b63e28e9f7477b9dd9dda0b2fead59924bf27bae4a6a524310a99f
4
- data.tar.gz: 31ad3672cf1f5811e0db81ea7937728b07c4cec6471e3bebb027559c78d08266
3
+ metadata.gz: 4d3ee61a20da53d4f971707c68d72d47665c39a59eebdd554d13b96254cf666c
4
+ data.tar.gz: 9c2e4b2fb2ca38f03a8f799c69d3f966088211b10909d1a19ca437e5437dc93c
5
5
  SHA512:
6
- metadata.gz: b0952b765aef635678377f3a6bdb7bdd973aa4bd9cd57be2a52522240fce40dac39f55138b04c0f25c220fc9a1f1848704184456cedc3e76742f7aad1b436c7f
7
- data.tar.gz: f37b2418e744562c062ac520ef51b3deda72718c41d4459598fe89ea9b59a1dfaa76971b04f2cd4a41395e04ba6e3017bba7e4cedc8a22e3c25bb499d90e2f92
6
+ metadata.gz: 6b0b6889ee66cb8b6cc230d015356478dba9ccd348003334ddb315bdc34d2071033a91c65c196c92207fb01f8551377043effd3117dac910118bfcd71b20523b
7
+ data.tar.gz: 64600259cd7a8e671a5393f7a0058182303f99c8cc80c2fe0fa41441c8a1a7ce7c2124658bec77b3cf26cdfc602a9945a0f9b77279c15bfb3f28a923608c8637
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- cm-admin (1.3.4)
4
+ cm-admin (1.3.5)
5
5
  caxlsx_rails
6
6
  cocoon (~> 1.2.15)
7
7
  csv-importer (~> 0.8.2)
@@ -15,7 +15,7 @@
15
15
  tr
16
16
  - nested_field.fields.each do |field|
17
17
  td data-field-type="#{field.field_type}"
18
- = record.send(field.field_name)
18
+ = show_field_value(record, field)
19
19
  - else
20
20
  - associated_records.each do |record|
21
21
  .card.mb-3 data-table-name="#{nested_field.field_name}"
@@ -142,7 +142,7 @@ module CmAdmin
142
142
  @available_actions << bulk_action
143
143
  end
144
144
 
145
- def filter(db_column_name, filter_type, options={})
145
+ def filter(db_column_name, filter_type, options = {})
146
146
  @filters << CmAdmin::Models::Filter.new(db_column_name: db_column_name, filter_type: filter_type, options: options)
147
147
  end
148
148
 
@@ -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, :scope_name
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
+ @scope_name = 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,40 +72,44 @@ 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.scope_name.present?
76
+ return records.send(filter.scope_name, 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)
@@ -123,7 +128,6 @@ module CmAdmin
123
128
 
124
129
  def cm_dropdown_filter(scope_value, records, filters)
125
130
  return nil if scope_value.nil?
126
-
127
131
  scope_value.each do |key, value|
128
132
  records = records.where(key => value) if value.present?
129
133
  end
@@ -1,3 +1,3 @@
1
1
  module CmAdmin
2
- VERSION = '1.3.4'
2
+ VERSION = '1.3.5'
3
3
  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.4
4
+ version: 1.3.5
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-08 00:00:00.000000000 Z
13
+ date: 2023-11-10 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rails