motor-admin 0.2.16 → 0.2.20

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: 61f88afa9ad5347e0bb47c719212c895b42d687b78e128d2812d15b8099415e9
4
- data.tar.gz: f7cdd045280ea0105d6d8022414e627d6cc8bff8519e554349735f55d2d58bf9
3
+ metadata.gz: 35d64da7a1fa64e919972e887faa99359d26015badb611b4c98cc55cd7f4d683
4
+ data.tar.gz: 9eb96163006387d2edd1edd76a406fd7ff4b9aa42bdeabc0de093555935e10e2
5
5
  SHA512:
6
- metadata.gz: 4ae3737a3554d2ba6c5881a18dd3afc3b62bc3f728f73ed2b04ed10ec0ac8abc1790d08dca8c3e8752512a08dea606123c810b0d0f06e3c4d08d486fa16f565f
7
- data.tar.gz: 409ec127ab1510c9e6c652e89ccfcff859050f62960fa738f4b803981f506956eac55960a1bc18a4e652e4019aaa343db5ce5cb89d9cacbe62b657cf908541d0
6
+ metadata.gz: af7ab14732dbbc23938303030fc42b8c2446c3ee9c5ad782967e37a5acd2b12b45799617e31dd128ece07e654df024a1e8eedd43969f515a42187430ad3b757d
7
+ data.tar.gz: 48276612be7ad9ac6bcae839a2459d2645d69fccb921f8505bf33009d963f6f1cfb8336d214d831ccb9017fb805debb448e37aefebace7fe02eded32fb033afb
@@ -16,6 +16,7 @@ module Motor
16
16
  'numeric' => 'float',
17
17
  'decimal' => 'float',
18
18
  'float4' => 'float',
19
+ 'bpchar' => 'string',
19
20
  'float8' => 'float',
20
21
  'float16' => 'float',
21
22
  'text' => 'string',
@@ -43,11 +44,13 @@ module Motor
43
44
 
44
45
  return UNIFIED_TYPES.fetch(name, name) if name
45
46
 
46
- DEFAULT_TYPE
47
+ nil
47
48
  end
48
49
 
49
50
  def build_types_hash
50
- type_map = ActiveRecord::Base.connection.send(:type_map)
51
+ connection_class = defined?(::ResourceRecord) ? ::ResourceRecord : ActiveRecord::Base
52
+
53
+ type_map = connection_class.connection.send(:type_map)
51
54
 
52
55
  type_map.instance_variable_get('@mapping').map do |name, type|
53
56
  next unless name.is_a?(String)
@@ -16,7 +16,7 @@ module Motor
16
16
  def generate_csv_for_relation(relation, reset_limit: false)
17
17
  relation = relation.limit(nil).offset(nil) if reset_limit
18
18
 
19
- result = relation.klass.connection.exec_query(relation.to_sql)
19
+ result = load_query_for_csv(relation)
20
20
 
21
21
  CSV.generate do |csv|
22
22
  csv << result.columns
@@ -24,6 +24,14 @@ module Motor
24
24
  result.rows.each { |row| csv << row }
25
25
  end
26
26
  end
27
+
28
+ def load_query_for_csv(relation)
29
+ model_name = relation.klass.model_name.human(count: :many, default: relation.klass.name.titleize.pluralize)
30
+
31
+ query = Motor::Query.find_by(name: "Export #{model_name}")
32
+
33
+ relation.klass.connection.exec_query(query&.sql_body || relation.to_sql)
34
+ end
27
35
  end
28
36
  end
29
37
 
@@ -142,6 +142,8 @@ module Motor
142
142
 
143
143
  return { select_options: enum.keys } if enum
144
144
 
145
+ return { number_format: true } if !column.name.ends_with?('_id') && %i[integer float].include?(column.type)
146
+
145
147
  {}
146
148
  end
147
149
 
@@ -86,10 +86,10 @@ module Motor
86
86
  result.columns.map.with_index do |column_name, index|
87
87
  column_type_class = result.column_types[column_name]
88
88
 
89
- column_type =
90
- if column_type_class
91
- ActiveRecordUtils::Types.find_name_for_type(column_type_class)
92
- else
89
+ column_type = ActiveRecordUtils::Types.find_name_for_type(column_type_class) if column_type_class
90
+
91
+ column_type ||=
92
+ begin
93
93
  not_nil_value = result.rows.reduce(nil) do |acc, row|
94
94
  column = row[index]
95
95
 
@@ -10,26 +10,19 @@ module Motor
10
10
  def call(model, cache_key:)
11
11
  configs = Motor::Configs::LoadFromCache.load_resources(cache_key: cache_key)
12
12
 
13
- return model if configs.blank?
13
+ return model if configs.blank? || sti_model?(model)
14
14
 
15
15
  maybe_fetch_from_cache(
16
16
  model,
17
17
  cache_key.to_s + model.object_id.to_s,
18
- lambda {
19
- resource_config = configs.find { |r| r.name == model.name.underscore }
20
-
21
- if resource_config
22
- build_configured_model(model, resource_config.preferences)
23
- else
24
- define_class_name_method(Class.new(model), model)
25
- end
26
- },
18
+ -> { build_configured_model_from_configs(model, configs) },
27
19
  ->(klass) { configure_reflection_classes(klass, cache_key) }
28
20
  )
29
21
  end
30
22
 
31
23
  def build_configured_model(model, config)
32
24
  klass = Class.new(model)
25
+ klass.inheritance_column = nil if model.superclass.abstract_class
33
26
 
34
27
  define_class_name_method(klass, model)
35
28
 
@@ -199,6 +192,20 @@ module Motor
199
192
  postprocess_block.call(result)
200
193
  end
201
194
  end
195
+
196
+ def build_configured_model_from_configs(model, configs)
197
+ resource_config = configs.find { |r| r.name == model.name.underscore }
198
+
199
+ if resource_config
200
+ build_configured_model(model, resource_config.preferences)
201
+ else
202
+ define_class_name_method(Class.new(model), model)
203
+ end
204
+ end
205
+
206
+ def sti_model?(model)
207
+ !model.superclass.abstract_class && model.columns_hash[model.inheritance_column.to_s]
208
+ end
202
209
  end
203
210
  end
204
211
  end
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.2.16'
4
+ VERSION = '0.2.20'
5
5
  end
@@ -2601,9 +2601,9 @@
2601
2601
  "icons/zoom-out.svg.gz": "icons/zoom-out.svg.gz",
2602
2602
  "icons/zoom-question.svg": "icons/zoom-question.svg",
2603
2603
  "icons/zoom-question.svg.gz": "icons/zoom-question.svg.gz",
2604
- "main-01a0523dc0c6602d6c7a.css.gz": "main-01a0523dc0c6602d6c7a.css.gz",
2605
- "main-01a0523dc0c6602d6c7a.js.LICENSE.txt": "main-01a0523dc0c6602d6c7a.js.LICENSE.txt",
2606
- "main-01a0523dc0c6602d6c7a.js.gz": "main-01a0523dc0c6602d6c7a.js.gz",
2607
- "main.css": "main-01a0523dc0c6602d6c7a.css",
2608
- "main.js": "main-01a0523dc0c6602d6c7a.js"
2604
+ "main-3053b6cb9c0fbea51e36.css.gz": "main-3053b6cb9c0fbea51e36.css.gz",
2605
+ "main-3053b6cb9c0fbea51e36.js.LICENSE.txt": "main-3053b6cb9c0fbea51e36.js.LICENSE.txt",
2606
+ "main-3053b6cb9c0fbea51e36.js.gz": "main-3053b6cb9c0fbea51e36.js.gz",
2607
+ "main.css": "main-3053b6cb9c0fbea51e36.css",
2608
+ "main.js": "main-3053b6cb9c0fbea51e36.js"
2609
2609
  }
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.2.16
4
+ version: 0.2.20
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-10-28 00:00:00.000000000 Z
11
+ date: 2021-11-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -1525,8 +1525,8 @@ files:
1525
1525
  - ui/dist/icons/zoom-money.svg.gz
1526
1526
  - ui/dist/icons/zoom-out.svg.gz
1527
1527
  - ui/dist/icons/zoom-question.svg.gz
1528
- - ui/dist/main-01a0523dc0c6602d6c7a.css.gz
1529
- - ui/dist/main-01a0523dc0c6602d6c7a.js.gz
1528
+ - ui/dist/main-3053b6cb9c0fbea51e36.css.gz
1529
+ - ui/dist/main-3053b6cb9c0fbea51e36.js.gz
1530
1530
  - ui/dist/manifest.json
1531
1531
  homepage:
1532
1532
  licenses: