eac_rails_utils 0.10.1 → 0.11.0
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 +4 -4
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper.rb +5 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder.rb +10 -2
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/association_select_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/common_text_fields.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/currency_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/date_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/fields_for.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/file_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/radio_select_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/searchable_association_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/select_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/time_field.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/common_form_helper/form_builder/year_month_field.rb +1 -1
- data/app/helpers/eac_rails_utils/data_table_helper.rb +13 -0
- data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/column.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/data_table.rb +2 -2
- data/{lib/eac → app/helpers/eac_rails_utils}/data_table_helper/setup.rb +2 -2
- data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper.rb +5 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/bootstrap_gui_builder.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/data_builder.rb +1 -1
- data/{lib/eac → app/helpers/eac_rails_utils}/menus_helper/gui_builder.rb +1 -1
- data/{lib/eac → app/validators/eac_rails_utils}/cpf_validator.rb +1 -1
- data/{lib/eac → app/validators/eac_rails_utils}/no_presence_validator.rb +1 -1
- data/lib/eac_rails_utils.rb +2 -39
- data/lib/eac_rails_utils/engine.rb +2 -0
- data/lib/{eac → eac_rails_utils}/htmlbeautifier.rb +1 -1
- data/lib/eac_rails_utils/models.rb +9 -0
- data/lib/eac_rails_utils/models/attribute_required.rb +43 -0
- data/lib/eac_rails_utils/models/fetch_errors.rb +92 -0
- data/lib/eac_rails_utils/models/inequality_queries.rb +39 -0
- data/lib/eac_rails_utils/models/tableless.rb +97 -0
- data/lib/eac_rails_utils/models/test_utils.rb +65 -0
- data/lib/eac_rails_utils/patches.rb +9 -0
- data/lib/eac_rails_utils/patches/action_controller_base.rb +2 -0
- data/lib/eac_rails_utils/version.rb +1 -1
- data/test/dummy/app/models/user.rb +4 -0
- data/test/{lib/eac → helpers/eac_rails_utils}/common_form_helper_test.rb +2 -2
- data/test/{lib/eac → helpers/eac_rails_utils}/data_table_test_helper_test.rb +2 -2
- data/test/{app/helpers → helpers}/eac_rails_utils/formatter_helper_test.rb +0 -0
- data/test/lib/eac_rails_utils/{patches/model_attribute_required_test.rb → models/attribute_required_test.rb} +1 -0
- data/test/lib/eac_rails_utils/models/fetch_errors_test.rb +80 -0
- data/test/lib/eac_rails_utils/models/tableless_test.rb +25 -0
- data/test/{lib/eac → validators}/cpf_validator_test.rb +2 -2
- metadata +63 -64
- data/lib/eac/data_table_helper.rb +0 -13
- data/lib/eac/inequality_queries.rb +0 -37
- data/lib/eac/model.rb +0 -90
- data/lib/eac/test_utils.rb +0 -61
- data/lib/eac_rails_utils/patches/model_attribute_required.rb +0 -34
- data/lib/eac_rails_utils/patches/ofx_parser.rb +0 -43
- data/lib/eac_rails_utils/tableless_model.rb +0 -92
- data/test/lib/eac/model_test.rb +0 -78
- data/test/lib/eac/source_target_fixtures_test_files/a.source.html +0 -1
- data/test/lib/eac/source_target_fixtures_test_files/a.target.yaml +0 -1
- data/test/lib/eac/source_target_fixtures_test_files/b.source.html +0 -1
- data/test/lib/eac/source_target_fixtures_test_files/c.target.yaml +0 -1
- data/test/lib/eac_rails_utils/tableless_model_test.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fdc60e761e13bcdf41dd921a5501fa3d6e4e372f3d3c2af48eef03a3f7bee723
|
4
|
+
data.tar.gz: 6121db8bfd8023c7360fea7d7f40c159a8411462970b37705e3d5c0217e8238f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5171b49a17923a648dc8a94b45d4386f1aec8c9079941da2ff66744347b07bc46ab6f64f42c0a46475fb258fa41fe78e755a8d0d1140497fafd10e19cbbfe902
|
7
|
+
data.tar.gz: 486f7961912a84ee2cc74ff6b91c13e9c19364a42b41ee75af835a6cda82fed07c097bf9ba15007f0207eb9f6f986a84fa329c3be87b0b6776dfe147f14a7bb7
|
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
4
6
|
module CommonFormHelper
|
7
|
+
::EacRubyUtils.require_sub __FILE__
|
8
|
+
|
5
9
|
def common_form(model_instance, options = {}, &block)
|
6
10
|
submit_label = options.delete(:submit_label)
|
7
11
|
options[:html] ||= {}
|
@@ -1,8 +1,13 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
|
+
require 'eac_rails_utils/models/attribute_required'
|
5
|
+
|
6
|
+
module EacRailsUtils
|
4
7
|
module CommonFormHelper
|
5
8
|
class FormBuilder
|
9
|
+
::EacRubyUtils.require_sub __FILE__
|
10
|
+
|
6
11
|
include AssociationSelectField
|
7
12
|
include CommonTextFields
|
8
13
|
include CurrencyField
|
@@ -87,7 +92,10 @@ module Eac
|
|
87
92
|
end
|
88
93
|
|
89
94
|
def field_label(field_name, label, required)
|
90
|
-
|
95
|
+
if required.nil?
|
96
|
+
required = ::EacRailsUtils::Models::AttributeRequired
|
97
|
+
.required?(model_instance, field_name)
|
98
|
+
end
|
91
99
|
@form.label(field_name, label, class: required ? 'required' : 'optional')
|
92
100
|
end
|
93
101
|
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
6
|
+
module DataTableHelper
|
7
|
+
::EacRubyUtils.require_sub __FILE__
|
8
|
+
|
9
|
+
def data_table(dataset, &block)
|
10
|
+
::EacRailsUtils::DataTableHelper::DataTable.new(self, dataset, &block).output
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module EacRailsUtils
|
4
4
|
module DataTableHelper
|
5
5
|
class DataTable
|
6
6
|
def initialize(view, dataset)
|
7
7
|
@view = view
|
8
8
|
@dataset = dataset
|
9
|
-
@setup = ::
|
9
|
+
@setup = ::EacRailsUtils::DataTableHelper::Setup.new
|
10
10
|
yield(@setup)
|
11
11
|
end
|
12
12
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
module
|
3
|
+
module EacRailsUtils
|
4
4
|
module DataTableHelper
|
5
5
|
class Setup
|
6
6
|
attr_reader :columns
|
@@ -12,7 +12,7 @@ module Eac
|
|
12
12
|
end
|
13
13
|
|
14
14
|
def column(label, path = nil, &block)
|
15
|
-
@columns << ::
|
15
|
+
@columns << ::EacRailsUtils::DataTableHelper::Column.new(label, path, block)
|
16
16
|
end
|
17
17
|
end
|
18
18
|
end
|
@@ -1,7 +1,11 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
4
6
|
module MenusHelper
|
7
|
+
::EacRubyUtils.require_sub __FILE__
|
8
|
+
|
5
9
|
def dropdown_menu(entries)
|
6
10
|
entries = DataBuilder.new(self).build(entries)
|
7
11
|
return nil unless entries
|
data/lib/eac_rails_utils.rb
CHANGED
@@ -1,44 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'eac_ruby_utils/require_sub'
|
4
4
|
|
5
5
|
module EacRailsUtils
|
6
|
-
|
7
|
-
require 'nested_form_fields'
|
8
|
-
require 'ofx-parser'
|
9
|
-
require 'virtus'
|
10
|
-
|
11
|
-
require 'eac_rails_utils/patches/action_controller_base'
|
12
|
-
require 'eac_rails_utils/patches/model_attribute_required'
|
13
|
-
require 'eac_rails_utils/patches/ofx_parser'
|
14
|
-
require 'eac_rails_utils/engine'
|
15
|
-
require 'eac_rails_utils/tableless_model'
|
16
|
-
require 'eac/cpf_validator'
|
17
|
-
require 'eac/common_form_helper/form_builder/association_select_field'
|
18
|
-
require 'eac/common_form_helper/form_builder/common_text_fields'
|
19
|
-
require 'eac/common_form_helper/form_builder/currency_field'
|
20
|
-
require 'eac/common_form_helper/form_builder/date_field'
|
21
|
-
require 'eac/common_form_helper/form_builder/fields_for'
|
22
|
-
require 'eac/common_form_helper/form_builder/file_field'
|
23
|
-
require 'eac/common_form_helper/form_builder/radio_select_field'
|
24
|
-
require 'eac/common_form_helper/form_builder/searchable_association_field'
|
25
|
-
require 'eac/common_form_helper/form_builder/select_field'
|
26
|
-
require 'eac/common_form_helper/form_builder/time_field'
|
27
|
-
require 'eac/common_form_helper/form_builder/year_month_field'
|
28
|
-
require 'eac/common_form_helper/form_builder'
|
29
|
-
require 'eac/common_form_helper'
|
30
|
-
require 'eac/data_table_helper'
|
31
|
-
require 'eac/htmlbeautifier'
|
32
|
-
require 'eac/inequality_queries'
|
33
|
-
require 'eac/menus_helper'
|
34
|
-
require 'eac/menus_helper/bootstrap_gui_builder'
|
35
|
-
require 'eac/menus_helper/data_builder'
|
36
|
-
require 'eac/menus_helper/gui_builder'
|
37
|
-
require 'eac/model'
|
38
|
-
require 'eac/no_presence_validator'
|
39
|
-
require 'eac/test_utils'
|
40
|
-
|
41
|
-
ActionView::Base.include Eac::CommonFormHelper
|
42
|
-
ActionView::Base.include Eac::DataTableHelper
|
43
|
-
ActionView::Base.include Eac::MenusHelper
|
6
|
+
::EacRubyUtils.require_sub __FILE__
|
44
7
|
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/concern'
|
4
|
+
|
5
|
+
module EacRailsUtils
|
6
|
+
module Models
|
7
|
+
module AttributeRequired
|
8
|
+
extend ::ActiveSupport::Concern
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def required?(model_class_or_record, attribute)
|
12
|
+
model = model_class_or_record_to_model(model_class_or_record)
|
13
|
+
record = model.new
|
14
|
+
record.validate
|
15
|
+
record.errors.key?(attribute.to_sym)
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def model_class_or_record_to_model(model_class_or_record)
|
21
|
+
model_class_or_record.is_a?(::Class) ? model_class_or_record : model_class_or_record.class
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
included do
|
26
|
+
extend ClassMethods
|
27
|
+
include InstanceMethods
|
28
|
+
end
|
29
|
+
|
30
|
+
module ClassMethods
|
31
|
+
def column_required?(column)
|
32
|
+
::EacRailsUtils::Models::AttributeRequired.required?(self, column)
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
module InstanceMethods
|
37
|
+
def attribute_required?(column)
|
38
|
+
self.class.column_required?(column)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EacRailsUtils
|
4
|
+
module Models
|
5
|
+
module FetchErrors
|
6
|
+
# Adiciona as mensagens de erro de record. As mensagens de uma coluna X em record
|
7
|
+
# serão adicionadas na coluna X em self. Se options[:default_column] for especificado
|
8
|
+
# as mensagens da coluna X de record em que X não existe em self serão adicionadas
|
9
|
+
# na coluna options[:default_column].
|
10
|
+
# Um array de colunas pode ser passado em options[:skip] de colunas em record que não
|
11
|
+
# terão suas falhas adicionadas.
|
12
|
+
def fetch_record_errors(record, options = {})
|
13
|
+
record.errors.keys.each do |column|
|
14
|
+
fetch_column_errors(record, column, column, options)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# Similar a fetch_record_errors, mas torna possível especificar, através de mapping,
|
19
|
+
# colunas-alvo em self com nomes diferentes das colunas-fonte em record.
|
20
|
+
# mapping tem o formato { record_column => self_column }.
|
21
|
+
def fetch_record_errors_by_mapping(record, mapping, options = {})
|
22
|
+
mapping.each do |record_column, self_column|
|
23
|
+
fetch_column_errors(record, record_column, self_column, options)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def fetch_column_errors(record, record_column, self_column, options = {})
|
28
|
+
return if options[:skip]&.include?(record_column)
|
29
|
+
|
30
|
+
record.errors[record_column].each do |message|
|
31
|
+
fetch_error_column_message(self_column, message, options[:default_column],
|
32
|
+
"#{record.class.human_attribute_name(record_column)}: ")
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# Verifica se uma coluna existe.
|
37
|
+
def column?(column)
|
38
|
+
respond_to?(column) && respond_to?("#{column}=")
|
39
|
+
end
|
40
|
+
|
41
|
+
def save_or_raise
|
42
|
+
raise "Falha ao tentar salvar #{self.class.name}: #{errors_to_string}" unless save
|
43
|
+
|
44
|
+
self
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
def fetch_error_column_message(column, message, default_column, default_column_message_prefix)
|
50
|
+
build_self_columns_messages(column, message, default_column,
|
51
|
+
default_column_message_prefix).each do |k, v|
|
52
|
+
if column?(k)
|
53
|
+
add_error_message(k, v)
|
54
|
+
break
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# Adiciona uma mensagem de erro a uma coluna somente se a coluna
|
60
|
+
# ainda não a possui
|
61
|
+
def add_error_message(column, message)
|
62
|
+
return if errors[column].include?(message)
|
63
|
+
|
64
|
+
errors.add(column, message)
|
65
|
+
end
|
66
|
+
|
67
|
+
# Produz uma lista de campos-mensagens, em ordem de preferência,
|
68
|
+
# que podem receber uma mensagem de falha.
|
69
|
+
def build_self_columns_messages(column, message, default_column,
|
70
|
+
default_column_message_prefix)
|
71
|
+
r = { column => message }
|
72
|
+
m = /^(.+)_id$/.match(column)
|
73
|
+
if m
|
74
|
+
r[m[1]] = message
|
75
|
+
else
|
76
|
+
r["#{column}_id"] = message
|
77
|
+
end
|
78
|
+
r[default_column] = "#{default_column_message_prefix}#{message}" if default_column
|
79
|
+
r
|
80
|
+
end
|
81
|
+
|
82
|
+
def errors_to_string
|
83
|
+
b = ''
|
84
|
+
errors.messages.each do |field, messages|
|
85
|
+
b += ' / ' if b != ''
|
86
|
+
b += field.to_s + ': ' + messages.to_s
|
87
|
+
end
|
88
|
+
b
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|