motor-admin 0.1.21 → 0.1.22

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: c6b8a4bcbd17fc0eed3b91dfac13285623adbfeda90a20a414193384070cccff
4
- data.tar.gz: 303af4bb7f49abfd02dfe91c6aa03278e1d6572e1831e73cd60fcef0b2a96a29
3
+ metadata.gz: a18eff1eb9149993c711610be8362de1818ae5abf9759cf06118d92cffb00c7b
4
+ data.tar.gz: 7cded1f7b12bcc38c10d0abe7df42bf66a412720cd884190d604ba70698d5fdd
5
5
  SHA512:
6
- metadata.gz: 144c32f7aa7902c4b2200fdde19b7487d1476856380c79b1d694d164227f98529b204a81f4bffcfc281a0951be13f585a9fe5ae57014bb66b38b94e49199b44b
7
- data.tar.gz: 78b1501b59c676ecc389febca43eadc961514e3720fcc3256c6664086f60f5c0167973c7b19c7ce1a8705404b2111136872a683a451bd9633b21531bf59a06e0
6
+ metadata.gz: 69a7380433550939c6efe7e7a7fb3b5aa7f4ba3d3adc3403c281579f86d7ab2b48c1767aadb059e4e58100cd12ae67a4df349a1d19bab65832421bc32bf57ea8
7
+ data.tar.gz: 34121a44946d91e89054c6cad50051af5c658e75660e0ba6ac64b77f394337f6d3ac4cbb3a03bb815c3ff6c6ed03b8f9023865fefe186bb1d02e80af68d7f732
@@ -2,7 +2,7 @@
2
2
  <html>
3
3
  <head>
4
4
  <title>Motor Admin</title>
5
- <meta name="viewport" content="width=device-width,initial-scale=1">
5
+ <meta name="viewport" content="width=device-width,initial-scale=1.0,maximum-scale=1.0,user-scalable=no">
6
6
  <link rel="stylesheet" media="all" href="<%= Motor::Assets.asset_path('main.css') %>">
7
7
  <%= csrf_meta_tags %>
8
8
  <%= csp_meta_tag %>
@@ -29,13 +29,16 @@ module Motor
29
29
 
30
30
  updated_model[:associations] = merge_by_name(
31
31
  model[:associations],
32
- configs[:associations]
32
+ configs[:associations],
33
+ {},
34
+ ->(_action) { true }
33
35
  )
34
36
 
35
37
  updated_model[:columns] = merge_by_name(
36
38
  model[:columns],
37
39
  configs[:columns],
38
- COLUMN_DEFAULTS
40
+ COLUMN_DEFAULTS,
41
+ ->(scope) { !scope[:virtual] }
39
42
  )
40
43
 
41
44
  updated_model[:actions] = merge_by_name(
@@ -53,7 +56,8 @@ module Motor
53
56
  updated_model[:scopes] = merge_by_name(
54
57
  model[:scopes],
55
58
  configs[:scopes],
56
- SCOPE_DEFAULTS
59
+ SCOPE_DEFAULTS,
60
+ ->(scope) { scope[:scope_type] != 'filter' }
57
61
  )
58
62
 
59
63
  updated_model
@@ -62,15 +66,17 @@ module Motor
62
66
  # @param defaults [Array<HashWithIndifferentAccess>]
63
67
  # @param configs [Array<HashWithIndifferentAccess>]
64
68
  # @return [Array<HashWithIndifferentAccess>]
65
- def merge_by_name(defaults, configs, default_attrs = {})
69
+ def merge_by_name(defaults, configs, default_attrs = {}, default_item_check = nil)
66
70
  return defaults if configs.blank?
67
71
 
68
72
  (defaults.pluck(:name) + configs.pluck(:name)).uniq.map do |name|
69
- config_item = configs.find { |e| e[:name] == name } || {}
70
- default_item = defaults.find { |e| e[:name] == name } || default_attrs
73
+ config_item = configs.find { |e| e[:name] == name }
74
+ default_item = defaults.find { |e| e[:name] == name }
71
75
 
72
- default_item.merge(config_item)
73
- end
76
+ next if default_item.nil? && default_item_check&.call(config_item)
77
+
78
+ (default_item || default_attrs).merge(config_item || {})
79
+ end.compact
74
80
  end
75
81
 
76
82
  # @return [HashWithIndifferentAccess<String, HashWithIndifferentAccess>]
@@ -24,6 +24,7 @@ module Motor
24
24
 
25
25
  TAB_DEFAULTS = {
26
26
  visible: true,
27
+ tab_type: 'default',
27
28
  preferences: {}
28
29
  }.with_indifferent_access
29
30
 
@@ -123,7 +124,7 @@ module Motor
123
124
  # @param new_columns [Array<HashWithIndifferentAccess>]
124
125
  # @return [Array<HashWithIndifferentAccess>]
125
126
  def normalize_columns(default_columns, existing_columns, new_columns)
126
- (existing_columns.pluck(:name) + new_columns.pluck(:name)).uniq.map do |name|
127
+ fetch_update_names(existing_columns, new_columns).uniq.map do |name|
127
128
  new_column = safe_fetch_by_name(new_columns, name)
128
129
 
129
130
  next if new_column[:_remove]
@@ -135,7 +136,11 @@ module Motor
135
136
  normalized_column = existing_column.merge(column_attrs)
136
137
  normalized_column = reject_default(default_column, normalized_column)
137
138
 
138
- normalized_column.merge(name: name) if normalized_column.present?
139
+ next if normalized_column.blank?
140
+
141
+ normalized_column[:name] ||= name
142
+
143
+ normalized_column
139
144
  end.compact.presence
140
145
  end
141
146
 
@@ -144,7 +149,7 @@ module Motor
144
149
  # @param new_actions [Array<HashWithIndifferentAccess>]
145
150
  # @return [Array<HashWithIndifferentAccess>]
146
151
  def normalize_actions(default_actions, existing_actions, new_actions)
147
- (existing_actions.pluck(:name) + new_actions.pluck(:name)).uniq.map do |name|
152
+ fetch_update_names(existing_actions, new_actions).map do |name|
148
153
  new_action = safe_fetch_by_name(new_actions, name)
149
154
 
150
155
  next if new_action[:_remove]
@@ -156,7 +161,11 @@ module Motor
156
161
  normalized_action = existing_action.merge(action_attrs)
157
162
  normalized_action = reject_default(default_action.presence || ACTION_DEFAULTS, normalized_action)
158
163
 
159
- normalized_action.merge(name: name) if normalized_action.present?
164
+ next if normalized_action.blank?
165
+
166
+ normalized_action[:name] ||= name
167
+
168
+ normalized_action
160
169
  end.compact.presence
161
170
  end
162
171
 
@@ -165,7 +174,7 @@ module Motor
165
174
  # @param new_tabs [Array<HashWithIndifferentAccess>]
166
175
  # @return [Array<HashWithIndifferentAccess>]
167
176
  def normalize_tabs(default_tabs, existing_tabs, new_tabs)
168
- (existing_tabs.pluck(:name) + new_tabs.pluck(:name)).uniq.map do |name|
177
+ fetch_update_names(existing_tabs, new_tabs).uniq.map do |name|
169
178
  new_tab = safe_fetch_by_name(new_tabs, name)
170
179
 
171
180
  next if new_tab[:_remove]
@@ -177,7 +186,11 @@ module Motor
177
186
  normalized_tab = existing_tab.merge(tab_attrs)
178
187
  normalized_tab = reject_default(default_tab.presence || TAB_DEFAULTS, normalized_tab)
179
188
 
180
- normalized_tab.merge(name: name) if normalized_tab.present?
189
+ next if normalized_tab.blank?
190
+
191
+ normalized_tab[:name] ||= name
192
+
193
+ normalized_tab
181
194
  end.compact.presence
182
195
  end
183
196
 
@@ -186,7 +199,7 @@ module Motor
186
199
  # @param new_scopes [Array<HashWithIndifferentAccess>]
187
200
  # @return [Array<HashWithIndifferentAccess>]
188
201
  def normalize_scopes(default_scopes, existing_scopes, new_scopes)
189
- (existing_scopes.pluck(:name) + new_scopes.pluck(:name)).uniq.map do |name|
202
+ fetch_update_names(existing_scopes, new_scopes).uniq.map do |name|
190
203
  new_scope = safe_fetch_by_name(new_scopes, name)
191
204
 
192
205
  next if new_scope[:_remove]
@@ -198,7 +211,11 @@ module Motor
198
211
  normalized_scope = existing_scope.merge(scope_attrs)
199
212
  normalized_scope = reject_default(default_scope.presence || SCOPE_DEFAULTS, normalized_scope)
200
213
 
201
- normalized_scope.merge(name: name) if normalized_scope.present?
214
+ next if normalized_scope.blank?
215
+
216
+ normalized_scope[:name] ||= name
217
+
218
+ normalized_scope
202
219
  end.compact.presence
203
220
  end
204
221
 
@@ -220,8 +237,14 @@ module Motor
220
237
  end.compact.presence
221
238
  end
222
239
 
240
+ def fetch_update_names(existing_items, new_items)
241
+ new_names = new_items.map { |e| e[:_update] || e[:name] }
242
+
243
+ (existing_items.pluck(:name) + new_names).uniq
244
+ end
245
+
223
246
  def safe_fetch_by_name(list, name)
224
- list.find { |e| e[:name] == name } || {}
247
+ list.find { |e| e[:_update] == name || e[:name] == name } || {}
225
248
  end
226
249
 
227
250
  # @param resource_name [String]
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.21'
4
+ VERSION = '0.1.22'
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-015cc9721345d5b8af80.css.gz": "main-015cc9721345d5b8af80.css.gz",
9
- "main-015cc9721345d5b8af80.js.LICENSE.txt": "main-015cc9721345d5b8af80.js.LICENSE.txt",
10
- "main-015cc9721345d5b8af80.js.gz": "main-015cc9721345d5b8af80.js.gz",
11
- "main.css": "main-015cc9721345d5b8af80.css",
12
- "main.js": "main-015cc9721345d5b8af80.js"
8
+ "main-25b3270c536d4f5d15b5.css.gz": "main-25b3270c536d4f5d15b5.css.gz",
9
+ "main-25b3270c536d4f5d15b5.js.LICENSE.txt": "main-25b3270c536d4f5d15b5.js.LICENSE.txt",
10
+ "main-25b3270c536d4f5d15b5.js.gz": "main-25b3270c536d4f5d15b5.js.gz",
11
+ "main.css": "main-25b3270c536d4f5d15b5.css",
12
+ "main.js": "main-25b3270c536d4f5d15b5.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.21
4
+ version: 0.1.22
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-02 00:00:00.000000000 Z
11
+ date: 2021-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord-filter
@@ -213,8 +213,8 @@ files:
213
213
  - lib/motor/ui_configs.rb
214
214
  - lib/motor/version.rb
215
215
  - ui/dist/fonts/ionicons.woff2
216
- - ui/dist/main-015cc9721345d5b8af80.css.gz
217
- - ui/dist/main-015cc9721345d5b8af80.js.gz
216
+ - ui/dist/main-25b3270c536d4f5d15b5.css.gz
217
+ - ui/dist/main-25b3270c536d4f5d15b5.js.gz
218
218
  - ui/dist/manifest.json
219
219
  homepage:
220
220
  licenses: