brick 1.0.128 → 1.0.129

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: 4465179ddef5435627439c7123bbb63e951abcda5bd8bd8e20952cca2fc9e274
4
- data.tar.gz: b567eb687c8eea355ece80562a67e424629df4a8b64aae48596e6c6b01c730b4
3
+ metadata.gz: 3b46bf80d393c0d6e4ffea3e8bfc1fbc03dc667902077efc9a887c8ab046a817
4
+ data.tar.gz: 927828e46dfd9ae6b7c14aced0f814bbc1d876e5af14aa872a13d2c13af85083
5
5
  SHA512:
6
- metadata.gz: 162cf46af2e43b2652e59f9fe8f4d2826e490def50fb868869f614aacb256cfeecee3833dfb41807bef5ea64c83e921b7e993e728e6e42730a214ec49601de67
7
- data.tar.gz: 15fdcc9b67bc82b55a195168e020575ca04d9d1ae5830e0d1bcd2c7e04944aba90238342cabc1c93b7b7d01619a369b1bb0a0383dbbe91666e796ffa4051aa55
6
+ metadata.gz: 49073fb48479c8df6805a35632ef321efa3144556feb1e2da701044ce110aa6cfcb8ced12186408929b8c3d6280ca6e393e886ba54eea87f0a622a58f9216e8e
7
+ data.tar.gz: eaccf857c54a108c764e786b5e8abd0f54ff5abbcadec558138dc947a5d7e3015fc1a5510a311301947cee815d086018e535a15958357abd3463ab59ee375908
@@ -864,6 +864,9 @@ JOIN (SELECT #{hm_selects.map { |s| "#{'br_t0.' if from_clause}#{s}" }.join(', '
864
864
  def brick_list
865
865
  pks = klass.primary_key.is_a?(String) ? [klass.primary_key] : klass.primary_key
866
866
  selects = pks.each_with_object([]) { |pk, s| s << pk unless s.include?(pk) }
867
+ # ActiveStorage compatibility
868
+ selects << 'service_name' if klass.name == 'ActiveStorage::Blob' && ActiveStorage::Blob.columns_hash.key?('service_name')
869
+ selects << 'blob_id' if klass.name == 'ActiveStorage::Attachment' && ActiveStorage::Attachment.columns_hash.key?('blob_id')
867
870
  pieces, my_dsl = klass.brick_parse_dsl(join_array = ::Brick::JoinArray.new, [], translations = {}, false, nil, true)
868
871
  brick_select(
869
872
  where_values_hash, selects, nil, translations, join_array,
@@ -58,7 +58,7 @@ module Brick
58
58
  '(Add RGeo gem to parse geometry detail)'
59
59
  end
60
60
  when :binary
61
- ::Brick::Rails.display_binary(val) if val
61
+ ::Brick::Rails.display_binary(val)
62
62
  else
63
63
  if col_type
64
64
  ::Brick::Rails::FormBuilder.hide_bcrypt(val, col_type == :xml)
@@ -69,8 +69,12 @@ module Brick
69
69
  end
70
70
 
71
71
  def display_binary(val)
72
+ return unless val
73
+
72
74
  @image_signatures ||= { (+"\xFF\xD8\xFF\xEE").force_encoding('ASCII-8BIT') => 'jpeg',
73
75
  (+"\xFF\xD8\xFF\xE0\x00\x10\x4A\x46\x49\x46\x00\x01").force_encoding('ASCII-8BIT') => 'jpeg',
76
+ (+"\xFF\xD8\xFF\xDB").force_encoding('ASCII-8BIT') => 'jpeg',
77
+ (+"\xFF\xD8\xFF\xE1").force_encoding('ASCII-8BIT') => 'jpeg',
74
78
  (+"\x89PNG\r\n\x1A\n").force_encoding('ASCII-8BIT') => 'png',
75
79
  '<svg' => 'svg+xml', # %%% Not yet very good detection for SVG
76
80
  (+'BM').force_encoding('ASCII-8BIT') => 'bmp',
@@ -90,7 +94,8 @@ module Brick
90
94
  val = val[object_start...object_start + real_object_size]
91
95
  end
92
96
 
93
- if (signature = @image_signatures.find { |k, _v| val[0...k.length] == k })
97
+ if (signature = @image_signatures.find { |k, _v| val[0...k.length] == k }) ||
98
+ (val[0..3] == 'RIFF' && val[8..11] == 'WEBP' && (signature = 'webp'))
94
99
  if val.length < 500_000
95
100
  "<img src=\"data:image/#{signature.last};base64,#{Base64.encode64(val)}\">"
96
101
  else
@@ -1290,7 +1295,7 @@ erDiagram
1290
1295
  </head>
1291
1296
  <body>
1292
1297
  <div id=\"titleBox\"><div id=\"titleSticky\">
1293
- <p style=\"color: green\"><%= notice %></p>#{"
1298
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1294
1299
  #{schema_options}" if schema_options}
1295
1300
  <select id=\"tbl\">#{table_options}</select>
1296
1301
  <table id=\"resourceName\"><tr>
@@ -1411,7 +1416,8 @@ end
1411
1416
  brick_grid(@#{table_name}, @_brick_bt_descrip, @_brick_sequence, @_brick_incl, @_brick_excl,
1412
1417
  cols, poly_cols, bts, #{hms_keys.inspect}, {#{hms_columns.join(', ')}}) %>
1413
1418
 
1414
- #{"<hr><%= link_to \"New #{obj_name}\", new_#{path_obj_name}_path %>" unless @_brick_model.is_view?}
1419
+ #{"<hr><%= link_to(\"New #{new_path_name = "new_#{path_obj_name}_path"
1420
+ obj_name}\", #{new_path_name}) if respond_to?(:#{new_path_name}) %>" unless @_brick_model.is_view?}
1415
1421
  #{script}
1416
1422
  </body>
1417
1423
  </html>
@@ -1423,7 +1429,7 @@ end
1423
1429
  # Must load all models, and then find what table names are represented
1424
1430
  # Easily could be multiple files involved (STI for instance)
1425
1431
  +"#{css}
1426
- <p style=\"color: green\"><%= notice %></p>#{"
1432
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1427
1433
  #{schema_options}" if schema_options}
1428
1434
  <select id=\"tbl\">#{table_options}</select>
1429
1435
  <h1>Status</h1>
@@ -1473,7 +1479,7 @@ end
1473
1479
  when 'orphans'
1474
1480
  if is_orphans
1475
1481
  +"#{css}
1476
- <p style=\"color: green\"><%= notice %></p>#{"
1482
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1477
1483
  #{schema_options}" if schema_options}
1478
1484
  <select id=\"tbl\">#{table_options}</select>
1479
1485
  <h1>Orphans<%= \" for #\{}\" if false %></h1>
@@ -1520,7 +1526,7 @@ end
1520
1526
  c23.141-70.188,89.141-120.906,167.063-120.906c97.25,0,176,78.813,176,176C511.828,227.078,404.391,119.641,271.844,119.641z\" />
1521
1527
  </svg>
1522
1528
 
1523
- <p style=\"color: green\"><%= notice %></p>#{"
1529
+ <p style=\"color: green\"><%= notice if request.respond_to?(:flash) %></p>#{"
1524
1530
  #{schema_options}" if schema_options}
1525
1531
  <select id=\"tbl\">#{table_options}</select>
1526
1532
  <table><td><h1><%= page_title %></h1></td>
@@ -1555,14 +1561,13 @@ end
1555
1561
  %><%= link_to \"(See all #\{model_name.pluralize})\", see_all_path %>
1556
1562
  #{erd_markup}
1557
1563
  <% if obj
1558
- # path_options = [obj.#{pk}]
1559
- # path_options << { '_brick_schema': } if
1560
- # url = send(:#\{model._brick_index(:singular)}_path, obj.#{pk})
1561
- options = {}
1562
- if ::Brick.config.path_prefix
1563
- path_helper = obj.new_record? ? #{model_name}._brick_index : #{model_name}._brick_index(:singular)
1564
- options[:url] = send(\"#\{path_helper}_path\".to_sym, obj)
1565
- end
1564
+ # path_options = [obj.#{pk}]
1565
+ # path_options << { '_brick_schema': } if
1566
+ options = {}
1567
+ if ::Brick.config.path_prefix
1568
+ path_helper = obj.new_record? ? #{model_name}._brick_index : #{model_name}._brick_index(:singular)
1569
+ options[:url] = send(\"#\{path_helper}_path\".to_sym, obj)
1570
+ end
1566
1571
  %>
1567
1572
  <br><br>
1568
1573
  <%= form_for(obj.becomes(#{model_name}), options) do |f| %>
@@ -1570,11 +1575,11 @@ end
1570
1575
  <% has_fields = false
1571
1576
  @#{obj_name}.attributes.each do |k, val|
1572
1577
  next if !(col = #{model_name}.columns_hash[k]) ||
1573
- (#{(pk || []).inspect}.include?(k) && !bts.key?(k)) ||
1578
+ (#{(pk.map(&:to_s) || []).inspect}.include?(k) && !bts.key?(k)) ||
1574
1579
  ::Brick.config.metadata_columns.include?(k) %>
1575
1580
  <tr>
1576
1581
  <th class=\"show-field\"<%= \" title=\\\"#\{col.comment}\\\"\".html_safe if col.respond_to?(:comment) && !col.comment.blank? %>>
1577
- <% has_fields = true
1582
+ <% has_fields = true
1578
1583
  if (bt = bts[k])
1579
1584
  # Add a final member in this array with descriptive options to be used in <select> drop-downs
1580
1585
  bt_name = bt[1].map { |x| x.first.name }.join('/')
@@ -1627,7 +1632,11 @@ end
1627
1632
  <% else %>
1628
1633
  <tr><td colspan=\"2\">(No displayable fields)</td></tr>
1629
1634
  <% end %>
1630
- </table>
1635
+ </table>#{
1636
+ "<%= binary = begin
1637
+ ::Brick::Rails.display_binary(obj&.blob&.download)&.html_safe
1638
+ rescue
1639
+ end %>" if model_name == 'ActiveStorage::Attachment'}
1631
1640
  <% end %>
1632
1641
 
1633
1642
  #{unless args.first == 'new'
@@ -1660,6 +1669,12 @@ end
1660
1669
  # In order to apply DSL properly, evaluate this HO the other way around as if it were as a BT
1661
1670
  collection = assoc.klass.where(assoc.foreign_key => @#{obj_name}.#{pk})
1662
1671
  collection = collection.instance_exec(&assoc.scopes.first) if assoc.scopes.present?
1672
+ if assoc.klass.name == 'ActiveStorage::Attachment'
1673
+ br_descrip = begin
1674
+ ::Brick::Rails.display_binary(obj.send(assoc.name)&.blob&.download)&.html_safe
1675
+ rescue
1676
+ end
1677
+ end
1663
1678
  else
1664
1679
  collection = @#{obj_name}.#{hm_name}
1665
1680
  end
@@ -1677,9 +1692,9 @@ end
1677
1692
  <tr><td>(none)</td></tr>
1678
1693
  <% else
1679
1694
  collection2.each do |#{hm_singular_name}| %>
1680
- <tr><td><%= br_descrip = #{hm_singular_name}.brick_descrip(
1681
- descrip_cols&.first&.map { |col| #{hm_singular_name}.send(col.last) }
1682
- )
1695
+ <tr><td><%= br_descrip ||= #{hm_singular_name}.brick_descrip(
1696
+ descrip_cols&.first&.map { |col| #{hm_singular_name}.send(col.last) }
1697
+ )
1683
1698
  link_to(br_descrip, #{hm.first.klass._brick_index(:singular)}_path(slashify(#{obj_pk}))) %></td></tr>
1684
1699
  <% end %>
1685
1700
  <% end %>
@@ -115,7 +115,14 @@ module Brick::Rails::FormTags
115
115
  if col[2] == 'HO'
116
116
  descrips = bt_descrip[col_name.to_sym][hm_klass]
117
117
  if (ho_id = (ho_id_col = descrips.last).map { |id_col| obj.send(id_col.to_sym) })&.first
118
- ho_txt = hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
118
+ ho_txt = if hm_klass.name == 'ActiveStorage::Attachment'
119
+ begin
120
+ ::Brick::Rails.display_binary(obj.send(col[3])&.blob&.download)&.html_safe
121
+ rescue
122
+ end
123
+ else
124
+ hm_klass.brick_descrip(obj, descrips[0..-2].map { |id| obj.send(id.last[0..62]) }, ho_id_col)
125
+ end
119
126
  out << link_to(ho_txt, send("#{hm_klass.base_class._brick_index(:singular)}_path".to_sym, ho_id))
120
127
  end
121
128
  else
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 128
8
+ TINY = 129
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: brick
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.128
4
+ version: 1.0.129
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits