eac_rails_utils 0.10.1 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|