brick 1.0.111 → 1.0.112

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: cb97e4a946526ed99a24e67b1e65d5f6490a40c97dc170dd0680166b087d1ccb
4
- data.tar.gz: 48d9c4f2afcd737d9a857f8c771448639c1b0d2d568dc966bbe4b85a97cb4610
3
+ metadata.gz: 69051263cec00b3672b8d48b0c595ff6875b81f27e7995be72a03d6699ad6d02
4
+ data.tar.gz: 217687ad2f6b93c33dc781f5930a0475a60fb27d782593109055beaae19f4e55
5
5
  SHA512:
6
- metadata.gz: 383d9996affbbd4fa049ab125490879143299a5477e98f921d450ea6b5b466d66a4cd210aac8db9c105a6eaf5f10eae8ac181d84d78fb6fc0b4c4151ac9dcee3
7
- data.tar.gz: b9902fc959b0de870ef5c402fe75e76d939d0c7c5abc7b8d3c16451b87f56929eb6e329153c6b5697936f10228752ba3b2f5f2a7de6aa5c9c77c105c34dd2cfa
6
+ metadata.gz: 6eff4c8a9f59673d14be1d890b067e17e631b1d6938a22b81c1ec45c3785489195d5d9e93939a38c681d36d844df2ad9a932584d8269b0fd2ef678de428c805c
7
+ data.tar.gz: 723425258d449708f18e086f289147b3402f728c93fbcba3a16654c3d15b4fe715022e427cb3f87e731bf9b73d693a5d4f43a500bdbde3641b69ac61e4c35e35
@@ -322,18 +322,26 @@ window.addEventListener(\"popstate\", linkSchemas);
322
322
  end
323
323
 
324
324
  def set_brick_model(find_args)
325
- # Need to return true if we can fill in the blanks for a missing one
326
- # args will be something like: ["index", ["categories"]]
327
- if (class_name = find_args[1].last&.singularize)
328
- find_args[1][find_args[1].length - 1] = class_name # Make sure the last item, defining the class name, is singular
329
- if (model = find_args[1].map(&:camelize).join('::').constantize) && (
330
- ['index', 'show'].include?(find_args.first) || # Everything has index and show
331
- # Only CUD stuff has create / update / destroy
332
- (!model.is_view? && ['new', 'create', 'edit', 'update', 'destroy'].include?(find_args.first))
333
- )
334
- @_brick_model = model
325
+ # Return an appropriate model for a given view template request.
326
+ # find_args will generally be something like: ["index", ["categories"]]
327
+ # and must cycle through all of find_args[1] because in some cases such as with Devise we get something like:
328
+ # ["create", ["users/sessions", "sessions", "devise/sessions", "devise", "application"], false, []]
329
+ find_args[1]&.any? do |resource_name|
330
+ if (class_name = (resource_parts = resource_name.split('/')).last&.singularize)
331
+ resource_parts[-1] = class_name # Make sure the last part, defining the class name, is singular
332
+ begin
333
+ if (model = Object.const_get(resource_parts.map(&:camelize).join('::')))&.is_a?(Class) && (
334
+ ['index', 'show'].include?(find_args.first) || # Everything has index and show
335
+ # Only CUD stuff has create / update / destroy
336
+ (!model.is_view? && ['new', 'create', 'edit', 'update', 'destroy'].include?(find_args.first))
337
+ )
338
+ @_brick_model = model
339
+ end
340
+ rescue
341
+ end
335
342
  end
336
343
  end
344
+ @_brick_model
337
345
  end
338
346
 
339
347
  def path_keys(hm_assoc, fk_name, pk)
@@ -356,6 +364,7 @@ window.addEventListener(\"popstate\", linkSchemas);
356
364
 
357
365
  alias :_brick_find_template :find_template
358
366
  def find_template(*args, **options)
367
+ find_template_err = nil
359
368
  unless (model_name = @_brick_model&.name) ||
360
369
  (is_status = ::Brick.config.add_status && args[0..1] == ['status', ['brick_gem']]) ||
361
370
  (is_orphans = ::Brick.config.add_orphans && args[0..1] == ['orphans', ['brick_gem']]) ||
@@ -364,10 +373,11 @@ window.addEventListener(\"popstate\", linkSchemas);
364
373
  if (possible_template = _brick_find_template(*args, **options))
365
374
  return possible_template
366
375
  end
367
- rescue
376
+ rescue StandardError => e
377
+ find_template_err = e # Can come up with stuff like Devise which has its own view templates
368
378
  end
369
379
  # Used to also have: ActionView.version < ::Gem::Version.new('5.0') &&
370
- model_name = (args[1].is_a?(Array) ? set_brick_model(args) : nil)&.name
380
+ model_name = set_brick_model(args)&.name
371
381
  end
372
382
 
373
383
  if @_brick_model
@@ -1154,7 +1164,7 @@ erDiagram
1154
1164
  td_count += 1 %>
1155
1165
  <td><%= link_to_brick(
1156
1166
  avo_svg,
1157
- { index_proc: Proc.new do |avo_model, relation|
1167
+ { index_proc: Proc.new do |_avo_model, relation|
1158
1168
  path_helper = \"resources_#\{relation.fetch(:auto_prefixed_schema, nil)}#\{model.model_name.route_key}_path\".to_sym
1159
1169
  ::Avo.railtie_routes_url_helpers.send(path_helper) if ::Avo.railtie_routes_url_helpers.respond_to?(path_helper)
1160
1170
  end,
@@ -1436,11 +1446,9 @@ end
1436
1446
  <% when :boolean %>
1437
1447
  <%= f.check_box k.to_sym %>
1438
1448
  <% when :integer, :decimal, :float %>
1439
- <%= if col_type == :integer
1440
- f.text_field k.to_sym, { pattern: '\\d*', class: 'check-validity' }
1441
- else
1442
- f.number_field k.to_sym
1443
- end %>
1449
+ <%= digit_pattern = col_type == :integer ? '\\d*' : '\\d*(?:\\.\\d*|)'
1450
+ # Used to do this for float / decimal: f.number_field k.to_sym
1451
+ f.text_field k.to_sym, { pattern: digit_pattern, class: 'check-validity' } %>
1444
1452
  <% when *dt_pickers.keys
1445
1453
  is_includes_dates = true %>
1446
1454
  <%= f.text_field k.to_sym, { class: dt_pickers[col_type] } %>
@@ -1542,7 +1550,12 @@ end}
1542
1550
  </body>
1543
1551
  </html>
1544
1552
  "
1545
-
1553
+ else # args.first isn't index / show / edit / new / orphans / status
1554
+ if find_template_err # Can surface when gems have their own view templates
1555
+ raise find_template_err
1556
+ else # Can surface if someone made their own controller which has a screwy action
1557
+ puts "Couldn't work with action #{args.first}"
1558
+ end
1546
1559
  end
1547
1560
  unless is_crosstab
1548
1561
  inline << "
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 111
8
+ TINY = 112
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.111
4
+ version: 1.0.112
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-08 00:00:00.000000000 Z
11
+ date: 2023-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord