brick 1.0.87 → 1.0.88

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: b178117c13e6d4feb053c27334b558285765a68a8bdc00c0a1d7a0a708ab3e70
4
- data.tar.gz: b4b90b2cef91df1797d3a6534d6658914000b01542fe244d7560d31922c2125e
3
+ metadata.gz: 9e346878b216d9e54ee0ca15be13ec0c2348f8cdf81d14a1eb4bc24ccb07aadb
4
+ data.tar.gz: 92b54e7227fad318508104690158b5c756cc37171e7eeaaaba41d7da97c5518f
5
5
  SHA512:
6
- metadata.gz: a7866357360543e3af339aced9e7ff8c1dff803f3f92eebb12926b5cefb4da18415003b729ad5aca3b7771a145035963bd1e49d8a46096bb943a161e4b33ca79
7
- data.tar.gz: b2978cf99f81c2ad59b04f656c189763d230542e9eb9d9eb7d3a922c609e79354926357320967f7de53a1a6cc4ec55b61811395138e632cb0f1a96993a31e926
6
+ metadata.gz: a8797a5e8924e3a89fd958f05d1bd442cf457428257cd697e438e1e6fe93427bc035177cea79fad47c6484427b30d2e3dc778f7a2166bc0fe27d383ce8659c1c
7
+ data.tar.gz: 0bd6d3cc1ad92a1ec897b1524fde2e3f6849c783705312908d206460f9060677c93c295f3f3b89ddd514e2b3d5faeae4900472b0f4a1419e57e91046a190b3f7
@@ -841,34 +841,9 @@ if Object.const_defined?('ActionView')
841
841
  args.first) ||
842
842
  @_brick_model
843
843
  # If not provided, do a best-effort to automatically determine the resource class or object
844
- sti_type = nil
845
844
  filter_parts = []
846
845
  klass_or_obj ||= begin
847
- res_names = ::Brick.relations.each_with_object({}) do |v, s|
848
- v_parts = v.first.split('.')
849
- v_parts.shift if v_parts.first == 'public'
850
- s[v_parts.join('.')] = v.first
851
- end
852
- c_path_parts = controller_path.split('/')
853
- klass = nil
854
- while c_path_parts.present?
855
- possible_c_path = c_path_parts.join('.')
856
- possible_c_path_singular = c_path_parts[0..-2] + [c_path_parts.last.singularize]
857
- possible_sti = possible_c_path_singular.join('/').camelize
858
- break if (
859
- res_name = res_names[possible_c_path] ||
860
- ((klass = Brick.config.sti_namespace_prefixes.key?("::#{possible_sti}") && possible_sti.constantize) &&
861
- (sti_type = possible_sti)) ||
862
- # %%% Used to have the more flexible: (DidYouMean::SpellChecker.new(dictionary: res_names.keys).correct(possible_c_path)).first
863
- res_names[possible_c_path] || res_names[possible_c_path_singular.join('.')]
864
- ) &&
865
- (
866
- klass ||
867
- ((rel = ::Brick.relations.fetch(res_name, nil)) &&
868
- (klass ||= rel[:class_name]&.constantize))
869
- )
870
- c_path_parts.shift
871
- end
846
+ klass, sti_type = ::Brick.ctrl_to_klass(controller_path)
872
847
  if klass
873
848
  type_col = klass.inheritance_column # Usually 'type'
874
849
  filter_parts << "#{type_col}=#{sti_type}" if sti_type && klass.column_names.include?(type_col)
@@ -1811,7 +1786,11 @@ end.class_exec do
1811
1786
  initializer_loaded = false
1812
1787
  orig_schema = nil
1813
1788
  if (relations = ::Brick.relations).empty?
1814
- # If there's schema things configured then we only expect our initializer to be named exactly this
1789
+ # Very first thing, load inflections since we'll be using .pluralize and .singularize on table and model names
1790
+ if File.exist?(inflections = ::Rails.root.join('config/initializers/inflections.rb'))
1791
+ load inflections
1792
+ end
1793
+ # Now the Brick initializer since there may be important schema things configured
1815
1794
  if File.exist?(brick_initializer = ::Rails.root.join('config/initializers/brick.rb'))
1816
1795
  initializer_loaded = load brick_initializer
1817
1796
  end
@@ -502,6 +502,16 @@ window.addEventListener(\"pageshow\", function() {
502
502
  }
503
503
  });
504
504
 
505
+ // Add \"Are you sure?\" behaviour to any data-confirm buttons out there
506
+ document.querySelectorAll(\"input[type=submit][data-confirm]\").forEach(function (btn) {
507
+ btn.addEventListener(\"click\", function (evt) {
508
+ if (!confirm(this.getAttribute(\"data-confirm\"))) {
509
+ evt.preventDefault();
510
+ return false;
511
+ }
512
+ });
513
+ });
514
+
505
515
  function changeout(href, param, value, trimAfter) {
506
516
  var hrefParts = href.split(\"?\");
507
517
  var params = hrefParts.length > 1 ? hrefParts[1].split(\"&\") : [];
@@ -556,13 +566,19 @@ if (grid) {
556
566
  if (lastHighCell) lastHighCell.classList.remove(\"highlight\");
557
567
  }
558
568
  var lastHighHeader = gridHighHeader;
559
- gridHighHeader = headerCols[gridHighCell.cellIndex];
560
- if (lastHighHeader !== gridHighHeader) {
569
+ if ((gridHighHeader = headerCols[gridHighCell.cellIndex]) && lastHighHeader !== gridHighHeader) {
561
570
  if (gridHighHeader) gridHighHeader.classList.add(\"highlight\");
562
571
  if (lastHighHeader) lastHighHeader.classList.remove(\"highlight\");
563
572
  }
564
573
  }
565
574
  }
575
+ // // LESS TOUCHY NAVIGATION BACK OR FORWARD IN HISTORY WHEN USING MOUSE WHEEL
576
+ // grid.addEventListener(\"wheel\", function (evt) {
577
+ // grid.scrollLeft += evt.deltaX;
578
+ // document.body.scrollTop += (evt.deltaY * 0.6);
579
+ // evt.preventDefault();
580
+ // return false;
581
+ // });
566
582
  }
567
583
  function setHeaderSizes() {
568
584
  // console.log(\"start\");
@@ -1185,7 +1201,7 @@ end
1185
1201
  <% end %>
1186
1202
 
1187
1203
  #{unless args.first == 'new'
1188
- confirm_are_you_sure = ActionView.version < ::Gem::Version.new('7.0') ? "data: { confirm: 'Are you sure?' }" : "form: { data: { turbo_confirm: 'Are you sure?' } }"
1204
+ confirm_are_you_sure = ActionView.version < ::Gem::Version.new('7.0') ? "data: { confirm: 'Delete #{model_name} -- Are you sure?' }" : "form: { data: { turbo_confirm: 'Delete #{model_name} -- Are you sure?' } }"
1189
1205
  hms_headers.each_with_object(+'') do |hm, s|
1190
1206
  # %%% Would be able to remove this when multiple foreign keys to same destination becomes bulletproof
1191
1207
  next if hm.first.options[:through] && !hm.first.through_reflection
@@ -1250,7 +1266,7 @@ flatpickr(\".timepicker\", {enableTime: true, noCalendar: true});
1250
1266
  if (mermaidCode) return; // Cut it short if we've already rendered the diagram
1251
1267
 
1252
1268
  mermaidCode = document.createElement(\"SCRIPT\");
1253
- mermaidCode.setAttribute(\"src\", \"https://cdn.jsdelivr.net/npm/mermaid/dist/mermaid.min.js\");
1269
+ mermaidCode.setAttribute(\"src\", \"https://cdn.jsdelivr.net/npm/mermaid@9.1.7/dist/mermaid.min.js\");
1254
1270
  mermaidCode.addEventListener(\"load\", function () {
1255
1271
  mermaid.initialize({
1256
1272
  startOnLoad: true,
@@ -5,7 +5,7 @@ module Brick
5
5
  module VERSION
6
6
  MAJOR = 1
7
7
  MINOR = 0
8
- TINY = 87
8
+ TINY = 88
9
9
 
10
10
  # PRE is nil unless it's a pre-release (beta, RC, etc.)
11
11
  PRE = nil
data/lib/brick.rb CHANGED
@@ -563,6 +563,41 @@ In config/initializers/brick.rb appropriate entries would look something like:
563
563
  end
564
564
  puts "\n"
565
565
  end
566
+
567
+ # Attempt to determine an ActiveRecord::Base class and additional STI information when given a controller's path
568
+ def ctrl_to_klass(ctrl_path, res_names = {})
569
+ klass = nil
570
+ sti_type = nil
571
+
572
+ if res_names.empty?
573
+ ::Brick.relations.each_with_object({}) do |v, s|
574
+ v_parts = v.first.split('.')
575
+ v_parts.shift if v_parts.first == 'public'
576
+ res_names[v_parts.join('.')] = v.first
577
+ end
578
+ end
579
+
580
+ c_path_parts = ctrl_path.split('/')
581
+ while c_path_parts.present?
582
+ possible_c_path = c_path_parts.join('.')
583
+ possible_c_path_singular = c_path_parts[0..-2] + [c_path_parts.last.singularize]
584
+ possible_sti = possible_c_path_singular.join('/').camelize
585
+ break if (
586
+ res_name = res_names[possible_c_path] ||
587
+ ((klass = Brick.config.sti_namespace_prefixes.key?("::#{possible_sti}") && possible_sti.constantize) &&
588
+ (sti_type = possible_sti)) ||
589
+ # %%% Used to have the more flexible: (DidYouMean::SpellChecker.new(dictionary: res_names.keys).correct(possible_c_path)).first
590
+ res_names[possible_c_path] || res_names[possible_c_path_singular.join('.')]
591
+ ) &&
592
+ (
593
+ klass ||
594
+ ((rel = ::Brick.relations.fetch(res_name, nil)) &&
595
+ (klass ||= rel[:class_name]&.constantize))
596
+ )
597
+ c_path_parts.shift
598
+ end
599
+ [klass, sti_type]
600
+ end
566
601
  end
567
602
 
568
603
  module RouteSet
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.87
4
+ version: 1.0.88
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lorin Thwaits
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-01 00:00:00.000000000 Z
11
+ date: 2022-11-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord