motor-admin 0.1.40 → 0.1.41

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: c650dcb3b3585c6776bb7ece77590fe9e69e5c64323dfa7827870f11203afe09
4
- data.tar.gz: 4e9e8e62612c93686c1c5ed2532b14a260e44078830302f7155e49a45a0b6a66
3
+ metadata.gz: e199bcfee455dceb3c76240eedc692aa869143ebc5521b3b1c7c6ebacc0ff7ec
4
+ data.tar.gz: 979bd32b1670d8b455a84027979b6e7274ebe5805424382b04fb25ae2cc761d3
5
5
  SHA512:
6
- metadata.gz: a8325df21f414fc4dfb5e61173ca94312662012d3a3ba12cb128a6c7c91d88b0cc97bfb344d8466500f43fd28bc6c3195eaa662e11ddb4c3333fbe1257611ad2
7
- data.tar.gz: 787be19b2a2407237060341ff623e20f40a86fc5a76ce075e75c1dd62fbede8bbd94dd7a0312072cd60af12571c9dcf7edf2afe7e088e6c75267893156cd8482
6
+ metadata.gz: 1dfc0454884759ce1d2ccb9d71acb083200465e5bc153ab4f0d4dc69492ac5d9d82e3b5525af1e6a332e4152073aa7d072c8f2031ca80469964a2976892b749b
7
+ data.tar.gz: 311d119be7294aa3da85619543fa7a502be9a602ef72feaf524d263ead9fd10e48fd0c29ae5ad01874d7bb4178eed6173471acdf00b1a824734b098e8bd4e82b
data/lib/motor.rb CHANGED
@@ -53,6 +53,7 @@ end
53
53
  require 'motor/version'
54
54
  require 'motor/admin'
55
55
  require 'motor/assets'
56
+ require 'motor/active_record_utils'
56
57
  require 'motor/build_schema'
57
58
  require 'motor/api_query'
58
59
  require 'motor/tags'
@@ -62,6 +63,5 @@ require 'motor/dashboards'
62
63
  require 'motor/forms'
63
64
  require 'motor/alerts'
64
65
  require 'motor/hash_serializer'
65
- require 'motor/active_record_utils'
66
66
  require 'motor/net_http_utils'
67
67
  require 'motor/railtie'
@@ -4,7 +4,7 @@ module Motor
4
4
  module ActiveRecordUtils
5
5
  module DefinedScopesExtension
6
6
  def scope(name, _body)
7
- (@__scopes__ ||= []) << name
7
+ (@__scopes__ ||= []) << name.to_sym
8
8
 
9
9
  super
10
10
  end
@@ -13,13 +13,20 @@ module Motor
13
13
  if rel.klass.defined_scopes.include?(scope_symbol)
14
14
  rel.public_send(scope_symbol)
15
15
  else
16
- configs = Motor::Resource.find_by_name(rel.klass.name.underscore)
17
- scope_configs = configs.preferences[:scopes].find { |s| s[:name] == scope }
16
+ apply_filter_scope(rel, scope)
17
+ end
18
+ end
18
19
 
19
- return rel unless scope_configs
20
+ def apply_filter_scope(rel, scope)
21
+ configs = Motor::Resource.find_by_name(rel.klass.name.underscore)
20
22
 
21
- ApiQuery::Filter.call(rel, scope_configs[:preferences][:filter])
22
- end
23
+ return rel unless configs
24
+
25
+ scope_configs = configs.preferences[:scopes].find { |s| s[:name] == scope }
26
+
27
+ return rel unless scope_configs
28
+
29
+ ApiQuery::Filter.call(rel, scope_configs[:preferences][:filter])
23
30
  end
24
31
  end
25
32
  end
@@ -14,15 +14,15 @@ module Motor
14
14
  fname
15
15
  lname
16
16
  sname
17
+ company
18
+ domain
19
+ title
17
20
  phone
18
21
  phone_number
19
22
  email
20
- domain
21
23
  phone
22
- company
23
24
  filename
24
25
  file_name
25
- title
26
26
  url
27
27
  make
28
28
  brand
@@ -42,7 +42,7 @@ module Motor
42
42
  end
43
43
 
44
44
  def select_column_name(column_names)
45
- name = column_names.find { |column_name| column_name.in?(DISPLAY_NAMES) }
45
+ name = DISPLAY_NAMES.find { |column_name| column_name.in?(column_names) }
46
46
  name ||= column_names.find { |column_name| column_name.match?(DISPLAY_NAME_REGEXP) }
47
47
 
48
48
  name
@@ -4,6 +4,7 @@ module Motor
4
4
  module BuildSchema
5
5
  module LoadFromRails
6
6
  MUTEX = Mutex.new
7
+ UNIFIED_TYPES = ActiveRecordUtils::Types::UNIFIED_TYPES
7
8
 
8
9
  module_function
9
10
 
@@ -20,8 +21,7 @@ module Motor
20
21
  def models
21
22
  eager_load_models!
22
23
 
23
- models = load_descendants(ActiveRecord::Base).uniq
24
- models = models.reject(&:abstract_class)
24
+ models = ActiveRecord::Base.descendants.reject(&:abstract_class)
25
25
 
26
26
  models -= Motor::ApplicationRecord.descendants
27
27
  models -= [Motor::Audit]
@@ -32,12 +32,6 @@ module Motor
32
32
  models
33
33
  end
34
34
 
35
- def load_descendants(model)
36
- model.descendants + model.descendants.flat_map do |klass|
37
- load_descendants(klass)
38
- end
39
- end
40
-
41
35
  def build_model_schema(model)
42
36
  model_name = model.name
43
37
 
@@ -92,10 +86,13 @@ module Motor
92
86
  end
93
87
 
94
88
  def build_table_column(column, model, default_attrs)
89
+ is_enum = model.defined_enums[column.name]
90
+
95
91
  {
96
92
  name: column.name,
97
93
  display_name: column.name.humanize,
98
- column_type: ActiveRecordUtils::Types::UNIFIED_TYPES[column.type.to_s] || column.type.to_s,
94
+ column_type: is_enum ? 'string' : UNIFIED_TYPES[column.type.to_s] || column.type.to_s,
95
+ is_array: column.array?,
99
96
  access_type: COLUMN_NAME_ACCESS_TYPES.fetch(column.name, ColumnAccessTypes::READ_WRITE),
100
97
  default_value: default_attrs[column.name],
101
98
  validators: fetch_validators(model, column.name),
@@ -181,6 +178,10 @@ module Motor
181
178
  []
182
179
  end
183
180
 
181
+ enum = model.defined_enums[column_name]
182
+
183
+ validators += [{ includes: enum.keys }] if enum
184
+
184
185
  validators += model.validators_on(column_name).map do |validator|
185
186
  build_validator_hash(validator)
186
187
  end.compact
@@ -210,6 +211,14 @@ module Motor
210
211
  else
211
212
  Rails.application.eager_load!
212
213
  end
214
+
215
+ ActiveRecord::Base.descendants.each do |model|
216
+ model.reflections.each do |_, ref|
217
+ ref.klass
218
+ rescue StandardError
219
+ next
220
+ end
221
+ end
213
222
  end
214
223
  end
215
224
  end
@@ -9,8 +9,8 @@ module Motor
9
9
  cache_keys = LoadFromCache.load_cache_keys
10
10
 
11
11
  normalize_hash(
12
- app_version: Motor::VERSION,
13
- file_version: cache_keys.values.max.to_time,
12
+ engine_version: Motor::VERSION,
13
+ file_version: cache_keys.values.compact.max.to_time,
14
14
  resources: build_resources_hash(cache_keys[:resources]),
15
15
  configs: build_configs_hash(cache_keys[:configs]),
16
16
  queries: build_queries_hash(cache_keys[:queries]),
@@ -6,6 +6,8 @@ module Motor
6
6
  module_function
7
7
 
8
8
  def call(configs_hash)
9
+ return if configs_hash.blank?
10
+
9
11
  configs_hash = configs_hash.with_indifferent_access
10
12
 
11
13
  Motor::ApplicationRecord.transaction do
data/lib/motor/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Motor
4
- VERSION = '0.1.40'
4
+ VERSION = '0.1.41'
5
5
  end
@@ -5,9 +5,9 @@
5
5
  "fonts/ionicons.ttf?v=3.0.0-alpha.3": "fonts/ionicons.ttf",
6
6
  "fonts/ionicons.woff2?v=3.0.0-alpha.3": "fonts/ionicons.woff2",
7
7
  "fonts/ionicons.woff?v=3.0.0-alpha.3": "fonts/ionicons.woff",
8
- "main-57d82791202293600221.css.gz": "main-57d82791202293600221.css.gz",
9
- "main-57d82791202293600221.js.LICENSE.txt": "main-57d82791202293600221.js.LICENSE.txt",
10
- "main-57d82791202293600221.js.gz": "main-57d82791202293600221.js.gz",
11
- "main.css": "main-57d82791202293600221.css",
12
- "main.js": "main-57d82791202293600221.js"
8
+ "main-0ef3be65da8d3b0dbabb.css.gz": "main-0ef3be65da8d3b0dbabb.css.gz",
9
+ "main-0ef3be65da8d3b0dbabb.js.LICENSE.txt": "main-0ef3be65da8d3b0dbabb.js.LICENSE.txt",
10
+ "main-0ef3be65da8d3b0dbabb.js.gz": "main-0ef3be65da8d3b0dbabb.js.gz",
11
+ "main.css": "main-0ef3be65da8d3b0dbabb.css",
12
+ "main.js": "main-0ef3be65da8d3b0dbabb.js"
13
13
  }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: motor-admin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.40
4
+ version: 0.1.41
5
5
  platform: ruby
6
6
  authors:
7
7
  - Pete Matsyburka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-15 00:00:00.000000000 Z
11
+ date: 2021-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -242,8 +242,8 @@ files:
242
242
  - lib/motor/tasks/motor.rake
243
243
  - lib/motor/version.rb
244
244
  - ui/dist/fonts/ionicons.woff2
245
- - ui/dist/main-57d82791202293600221.css.gz
246
- - ui/dist/main-57d82791202293600221.js.gz
245
+ - ui/dist/main-0ef3be65da8d3b0dbabb.css.gz
246
+ - ui/dist/main-0ef3be65da8d3b0dbabb.js.gz
247
247
  - ui/dist/manifest.json
248
248
  homepage:
249
249
  licenses: