cm-admin 1.3.4 → 1.3.5
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 +4 -4
- data/Gemfile.lock +1 -1
- data/app/views/cm_admin/main/_nested_table_section.html.slim +1 -1
- data/lib/cm_admin/models/dsl_method.rb +1 -1
- data/lib/cm_admin/models/filter.rb +37 -33
- data/lib/cm_admin/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 4d3ee61a20da53d4f971707c68d72d47665c39a59eebdd554d13b96254cf666c
|
|
4
|
+
data.tar.gz: 9c2e4b2fb2ca38f03a8f799c69d3f966088211b10909d1a19ca437e5437dc93c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6b0b6889ee66cb8b6cc230d015356478dba9ccd348003334ddb315bdc34d2071033a91c65c196c92207fb01f8551377043effd3117dac910118bfcd71b20523b
|
|
7
|
+
data.tar.gz: 64600259cd7a8e671a5393f7a0058182303f99c8cc80c2fe0fa41441c8a1a7ce7c2124658bec77b3cf26cdfc602a9945a0f9b77279c15bfb3f28a923608c8637
|
data/Gemfile.lock
CHANGED
|
@@ -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
|
|
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
|
-
|
|
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_#{
|
|
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
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
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
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
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
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
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
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
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
|
data/lib/cm_admin/version.rb
CHANGED
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
|
+
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-
|
|
13
|
+
date: 2023-11-10 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: rails
|