brick 1.0.111 → 1.0.112

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: 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