rails_admin 3.0.0 → 3.1.2
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/Gemfile +3 -0
- data/README.md +4 -2
- data/Rakefile +2 -0
- data/app/assets/javascripts/rails_admin/{application.js → application.js.erb} +8 -0
- data/app/assets/stylesheets/rails_admin/{application.scss → application.scss.erb} +4 -0
- data/app/controllers/rails_admin/application_controller.rb +2 -0
- data/app/controllers/rails_admin/main_controller.rb +9 -14
- data/app/helpers/rails_admin/application_helper.rb +37 -9
- data/app/helpers/rails_admin/form_builder.rb +10 -0
- data/app/helpers/rails_admin/main_helper.rb +7 -15
- data/app/views/layouts/rails_admin/_head.html.erb +12 -3
- data/app/views/layouts/rails_admin/_secondary_navigation.html.erb +3 -1
- data/app/views/layouts/rails_admin/_sidebar_navigation.html.erb +1 -1
- data/app/views/layouts/rails_admin/application.html.erb +4 -1
- data/app/views/rails_admin/main/_dashboard_history.html.erb +1 -1
- data/app/views/rails_admin/main/_form_action_text.html.erb +2 -1
- data/app/views/rails_admin/main/_form_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/_form_filtering_multiselect.html.erb +2 -2
- data/app/views/rails_admin/main/_form_filtering_select.html.erb +1 -1
- data/app/views/rails_admin/main/_form_multiple_file_upload.html.erb +1 -1
- data/app/views/rails_admin/main/dashboard.html.erb +2 -2
- data/app/views/rails_admin/main/history.html.erb +1 -1
- data/app/views/rails_admin/main/index.html.erb +7 -19
- data/config/initializers/active_record_extensions.rb +26 -3
- data/config/initializers/mongoid_extensions.rb +2 -0
- data/config/locales/rails_admin.en.yml +3 -2
- data/config/routes.rb +2 -0
- data/lib/generators/rails_admin/importmap_formatter.rb +28 -0
- data/lib/generators/rails_admin/install_generator.rb +71 -9
- data/lib/generators/rails_admin/templates/rails_admin.js +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.scss.erb +1 -0
- data/lib/generators/rails_admin/templates/rails_admin.webpacker.js +2 -0
- data/lib/generators/rails_admin/utils.rb +2 -0
- data/lib/rails_admin/abstract_model.rb +9 -2
- data/lib/rails_admin/adapters/active_record/association.rb +11 -1
- data/lib/rails_admin/adapters/active_record/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/active_record/property.rb +2 -0
- data/lib/rails_admin/adapters/active_record.rb +25 -2
- data/lib/rails_admin/adapters/composite_primary_keys/association.rb +45 -0
- data/lib/rails_admin/adapters/composite_primary_keys.rb +40 -0
- data/lib/rails_admin/adapters/mongoid/association.rb +14 -4
- data/lib/rails_admin/adapters/mongoid/bson.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/extension.rb +3 -3
- data/lib/rails_admin/adapters/mongoid/object_extension.rb +2 -0
- data/lib/rails_admin/adapters/mongoid/property.rb +2 -0
- data/lib/rails_admin/adapters/mongoid.rb +4 -2
- data/lib/rails_admin/config/actions/base.rb +2 -0
- data/lib/rails_admin/config/actions/bulk_delete.rb +2 -0
- data/lib/rails_admin/config/actions/dashboard.rb +2 -0
- data/lib/rails_admin/config/actions/delete.rb +2 -0
- data/lib/rails_admin/config/actions/edit.rb +2 -0
- data/lib/rails_admin/config/actions/export.rb +2 -0
- data/lib/rails_admin/config/actions/history_index.rb +2 -0
- data/lib/rails_admin/config/actions/history_show.rb +2 -0
- data/lib/rails_admin/config/actions/index.rb +2 -0
- data/lib/rails_admin/config/actions/new.rb +2 -0
- data/lib/rails_admin/config/actions/show.rb +2 -0
- data/lib/rails_admin/config/actions/show_in_app.rb +2 -0
- data/lib/rails_admin/config/actions.rb +2 -0
- data/lib/rails_admin/config/configurable.rb +2 -0
- data/lib/rails_admin/config/const_load_suppressor.rb +78 -0
- data/lib/rails_admin/config/fields/association.rb +2 -0
- data/lib/rails_admin/config/fields/base.rb +44 -14
- data/lib/rails_admin/config/fields/factories/action_text.rb +2 -0
- data/lib/rails_admin/config/fields/factories/active_storage.rb +2 -0
- data/lib/rails_admin/config/fields/factories/association.rb +6 -5
- data/lib/rails_admin/config/fields/factories/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/factories/devise.rb +2 -0
- data/lib/rails_admin/config/fields/factories/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/factories/enum.rb +2 -0
- data/lib/rails_admin/config/fields/factories/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/factories/password.rb +2 -0
- data/lib/rails_admin/config/fields/factories/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/group.rb +2 -0
- data/lib/rails_admin/config/fields/types/action_text.rb +6 -0
- data/lib/rails_admin/config/fields/types/active_record_enum.rb +2 -0
- data/lib/rails_admin/config/fields/types/active_storage.rb +14 -0
- data/lib/rails_admin/config/fields/types/all.rb +3 -0
- data/lib/rails_admin/config/fields/types/belongs_to_association.rb +7 -5
- data/lib/rails_admin/config/fields/types/boolean.rb +7 -1
- data/lib/rails_admin/config/fields/types/bson_object_id.rb +2 -0
- data/lib/rails_admin/config/fields/types/carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/citext.rb +2 -0
- data/lib/rails_admin/config/fields/types/ck_editor.rb +2 -0
- data/lib/rails_admin/config/fields/types/code_mirror.rb +2 -0
- data/lib/rails_admin/config/fields/types/color.rb +2 -0
- data/lib/rails_admin/config/fields/types/composite_keys_belongs_to_association.rb +31 -0
- data/lib/rails_admin/config/fields/types/date.rb +2 -0
- data/lib/rails_admin/config/fields/types/datetime.rb +12 -0
- data/lib/rails_admin/config/fields/types/decimal.rb +2 -0
- data/lib/rails_admin/config/fields/types/dragonfly.rb +2 -0
- data/lib/rails_admin/config/fields/types/enum.rb +15 -2
- data/lib/rails_admin/config/fields/types/file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/float.rb +2 -0
- data/lib/rails_admin/config/fields/types/froala.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_and_belongs_to_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_many_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/has_one_association.rb +7 -1
- data/lib/rails_admin/config/fields/types/hidden.rb +2 -0
- data/lib/rails_admin/config/fields/types/inet.rb +2 -0
- data/lib/rails_admin/config/fields/types/integer.rb +2 -0
- data/lib/rails_admin/config/fields/types/json.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_active_storage.rb +22 -0
- data/lib/rails_admin/config/fields/types/multiple_carrierwave.rb +2 -0
- data/lib/rails_admin/config/fields/types/multiple_file_upload.rb +2 -0
- data/lib/rails_admin/config/fields/types/numeric.rb +6 -0
- data/lib/rails_admin/config/fields/types/paperclip.rb +2 -0
- data/lib/rails_admin/config/fields/types/password.rb +2 -0
- data/lib/rails_admin/config/fields/types/polymorphic_association.rb +2 -0
- data/lib/rails_admin/config/fields/types/serialized.rb +2 -0
- data/lib/rails_admin/config/fields/types/shrine.rb +2 -0
- data/lib/rails_admin/config/fields/types/simple_mde.rb +2 -0
- data/lib/rails_admin/config/fields/types/string.rb +2 -0
- data/lib/rails_admin/config/fields/types/string_like.rb +6 -0
- data/lib/rails_admin/config/fields/types/text.rb +2 -0
- data/lib/rails_admin/config/fields/types/time.rb +6 -0
- data/lib/rails_admin/config/fields/types/timestamp.rb +2 -0
- data/lib/rails_admin/config/fields/types/uuid.rb +2 -0
- data/lib/rails_admin/config/fields/types/wysihtml5.rb +2 -0
- data/lib/rails_admin/config/fields/types.rb +2 -0
- data/lib/rails_admin/config/fields.rb +3 -1
- data/lib/rails_admin/config/groupable.rb +2 -0
- data/lib/rails_admin/config/has_description.rb +2 -0
- data/lib/rails_admin/config/has_fields.rb +3 -1
- data/lib/rails_admin/config/has_groups.rb +2 -0
- data/lib/rails_admin/config/hideable.rb +2 -0
- data/lib/rails_admin/config/inspectable.rb +2 -0
- data/lib/rails_admin/config/lazy_model.rb +74 -0
- data/lib/rails_admin/config/model.rb +5 -1
- data/lib/rails_admin/config/proxyable/proxy.rb +2 -0
- data/lib/rails_admin/config/proxyable.rb +2 -0
- data/lib/rails_admin/config/sections/base.rb +2 -0
- data/lib/rails_admin/config/sections/create.rb +2 -0
- data/lib/rails_admin/config/sections/edit.rb +2 -0
- data/lib/rails_admin/config/sections/export.rb +2 -0
- data/lib/rails_admin/config/sections/list.rb +6 -0
- data/lib/rails_admin/config/sections/modal.rb +2 -0
- data/lib/rails_admin/config/sections/nested.rb +2 -0
- data/lib/rails_admin/config/sections/show.rb +2 -0
- data/lib/rails_admin/config/sections/update.rb +2 -0
- data/lib/rails_admin/config/sections.rb +2 -0
- data/lib/rails_admin/config.rb +30 -42
- data/lib/rails_admin/engine.rb +19 -17
- data/lib/rails_admin/extension.rb +2 -0
- data/lib/rails_admin/extensions/cancancan/authorization_adapter.rb +21 -4
- data/lib/rails_admin/extensions/cancancan.rb +2 -0
- data/lib/rails_admin/extensions/controller_extension.rb +2 -0
- data/lib/rails_admin/extensions/paper_trail/auditing_adapter.rb +49 -27
- data/lib/rails_admin/extensions/paper_trail.rb +2 -0
- data/lib/rails_admin/extensions/pundit/authorization_adapter.rb +2 -0
- data/lib/rails_admin/extensions/pundit.rb +2 -0
- data/lib/rails_admin/support/csv_converter.rb +2 -2
- data/lib/rails_admin/support/datetime.rb +3 -1
- data/lib/rails_admin/support/es_module_processor.rb +23 -0
- data/lib/rails_admin/support/hash_helper.rb +2 -0
- data/lib/rails_admin/version.rb +4 -2
- data/lib/rails_admin.rb +7 -2
- data/lib/tasks/rails_admin.rake +2 -0
- data/package.json +2 -2
- data/src/rails_admin/base.js +14 -3
- data/src/rails_admin/filter-box.js +166 -210
- data/src/rails_admin/filtering-multiselect.js +5 -10
- data/src/rails_admin/filtering-select.js +16 -7
- data/src/rails_admin/i18n.js +3 -1
- data/src/rails_admin/jquery.js +3 -0
- data/src/rails_admin/nested-form-hooks.js +6 -4
- data/src/rails_admin/remote-form.js +5 -5
- data/src/rails_admin/styles/base/theming.scss +25 -8
- data/src/rails_admin/styles/base.scss +5 -5
- data/src/rails_admin/styles/widgets.scss +1 -1
- data/src/rails_admin/ui.js +52 -19
- data/src/rails_admin/widgets.js +7 -2
- data/vendor/assets/fonts/rails_admin/fa-solid-900.ttf +0 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.woff2 +0 -0
- data/vendor/assets/javascripts/rails_admin/jquery3.js +118 -109
- data/vendor/assets/stylesheets/rails_admin/font-awesome.scss +4531 -2782
- metadata +16 -14
- data/lib/generators/rails_admin/templates/rails_admin.js.erb +0 -2
- data/lib/generators/rails_admin/templates/rails_admin.scss +0 -1
- data/lib/generators/rails_admin/templates/webpack.config.js +0 -29
- data/lib/rails_admin/support/esmodule_preprocessor.rb +0 -33
- data/vendor/assets/fonts/rails_admin/fa-solid-900.eot +0 -0
- data/vendor/assets/fonts/rails_admin/fa-solid-900.svg +0 -5034
- data/vendor/assets/fonts/rails_admin/fa-solid-900.woff +0 -0
- data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings-white.png +0 -0
- data/vendor/assets/images/rails_admin/bootstrap/glyphicons-halflings.png +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/proxyable'
|
|
2
4
|
require 'rails_admin/config/configurable'
|
|
3
5
|
require 'rails_admin/config/hideable'
|
|
@@ -58,10 +60,28 @@ module RailsAdmin
|
|
|
58
60
|
!virtual? || children_fields.first || false
|
|
59
61
|
end
|
|
60
62
|
|
|
63
|
+
def sort_column
|
|
64
|
+
if sortable == true
|
|
65
|
+
"#{abstract_model.table_name}.#{name}"
|
|
66
|
+
elsif (sortable.is_a?(String) || sortable.is_a?(Symbol)) && sortable.to_s.include?('.') # just provide sortable, don't do anything smart
|
|
67
|
+
sortable
|
|
68
|
+
elsif sortable.is_a?(Hash) # just join sortable hash, don't do anything smart
|
|
69
|
+
"#{sortable.keys.first}.#{sortable.values.first}"
|
|
70
|
+
elsif association # use column on target table
|
|
71
|
+
"#{associated_model_config.abstract_model.table_name}.#{sortable}"
|
|
72
|
+
else # use described column in the field conf.
|
|
73
|
+
"#{abstract_model.table_name}.#{sortable}"
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
61
77
|
register_instance_option :searchable do
|
|
62
78
|
!virtual? || children_fields.first || false
|
|
63
79
|
end
|
|
64
80
|
|
|
81
|
+
register_instance_option :search_operator do
|
|
82
|
+
RailsAdmin::Config.default_search_operator
|
|
83
|
+
end
|
|
84
|
+
|
|
65
85
|
register_instance_option :queryable? do
|
|
66
86
|
!virtual?
|
|
67
87
|
end
|
|
@@ -70,8 +90,22 @@ module RailsAdmin
|
|
|
70
90
|
!!searchable
|
|
71
91
|
end
|
|
72
92
|
|
|
73
|
-
register_instance_option :
|
|
74
|
-
|
|
93
|
+
register_instance_option :filter_operators do
|
|
94
|
+
[]
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
register_instance_option :default_filter_operator do
|
|
98
|
+
nil
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def filter_options
|
|
102
|
+
{
|
|
103
|
+
label: label,
|
|
104
|
+
name: name,
|
|
105
|
+
operator: default_filter_operator,
|
|
106
|
+
operators: filter_operators,
|
|
107
|
+
type: type,
|
|
108
|
+
}
|
|
75
109
|
end
|
|
76
110
|
|
|
77
111
|
# serials and dates are reversed in list, which is more natural (last modified items first).
|
|
@@ -226,10 +260,6 @@ module RailsAdmin
|
|
|
226
260
|
[]
|
|
227
261
|
end
|
|
228
262
|
|
|
229
|
-
register_instance_option :default_filter_operator do
|
|
230
|
-
nil
|
|
231
|
-
end
|
|
232
|
-
|
|
233
263
|
register_instance_option :eager_load do
|
|
234
264
|
false
|
|
235
265
|
end
|
|
@@ -301,13 +331,13 @@ module RailsAdmin
|
|
|
301
331
|
def value
|
|
302
332
|
bindings[:object].safe_send(name)
|
|
303
333
|
rescue NoMethodError => e
|
|
304
|
-
raise e.exception
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
334
|
+
raise e.exception <<~ERROR
|
|
335
|
+
#{e.message}
|
|
336
|
+
If you want to use a RailsAdmin virtual field(= a field without corresponding instance method),
|
|
337
|
+
you should declare 'formatted_value' in the field definition.
|
|
338
|
+
field :#{name} do
|
|
339
|
+
formatted_value{ bindings[:object].call_some_method }
|
|
340
|
+
end
|
|
311
341
|
ERROR
|
|
312
342
|
end
|
|
313
343
|
|
|
@@ -337,7 +367,7 @@ module RailsAdmin
|
|
|
337
367
|
end
|
|
338
368
|
|
|
339
369
|
def parse_input(_params)
|
|
340
|
-
#
|
|
370
|
+
# overridden
|
|
341
371
|
end
|
|
342
372
|
|
|
343
373
|
def inverse_of
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields'
|
|
2
4
|
require 'rails_admin/config/fields/types'
|
|
3
5
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
|
4
6
|
|
|
5
7
|
RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
field = RailsAdmin::Config::Fields::Types.load("#{association.polymorphic? ? :polymorphic : association.type}_association").new(parent, association.name, association)
|
|
8
|
+
parent.abstract_model.associations.filter { |a| Array(a.foreign_key).include?(properties.name) && %i[belongs_to has_and_belongs_to_many].include?(a.type) }.each do |association|
|
|
9
|
+
field = RailsAdmin::Config::Fields::Types.load(association.field_type).new(parent, association.name, association)
|
|
9
10
|
fields << field
|
|
10
11
|
|
|
11
12
|
child_columns = []
|
|
@@ -13,7 +14,7 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
|
13
14
|
%i[foreign_key foreign_type foreign_inverse_of]
|
|
14
15
|
else
|
|
15
16
|
[:foreign_key]
|
|
16
|
-
end.
|
|
17
|
+
end.flat_map { |k| Array(association.send(k)) }.compact
|
|
17
18
|
|
|
18
19
|
parent.abstract_model.properties.select { |p| possible_field_names.include? p.name }.each do |column|
|
|
19
20
|
child_field = fields.detect { |f| f.name.to_s == column.name.to_s }
|
|
@@ -27,5 +28,5 @@ RailsAdmin::Config::Fields.register_factory do |parent, properties, fields|
|
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
field.children_fields child_columns.collect(&:name)
|
|
30
|
-
end
|
|
31
|
+
end.any?
|
|
31
32
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/types/text'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -20,6 +22,10 @@ module RailsAdmin
|
|
|
20
22
|
"https://cdnjs.cloudflare.com/ajax/libs/trix/#{version}/trix.js"
|
|
21
23
|
end
|
|
22
24
|
|
|
25
|
+
register_instance_option :warn_dynamic_load do
|
|
26
|
+
true
|
|
27
|
+
end
|
|
28
|
+
|
|
23
29
|
register_instance_option :partial do
|
|
24
30
|
:form_action_text
|
|
25
31
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/types/file_upload'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -26,6 +28,18 @@ module RailsAdmin
|
|
|
26
28
|
{"#{name}_attachment": :blob}
|
|
27
29
|
end
|
|
28
30
|
|
|
31
|
+
register_instance_option :direct? do
|
|
32
|
+
false
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
register_instance_option :html_attributes do
|
|
36
|
+
{
|
|
37
|
+
required: required? && !value.present?,
|
|
38
|
+
}.merge(
|
|
39
|
+
direct? && {data: {direct_upload_url: bindings[:view].main_app.rails_direct_uploads_url}} || {},
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
29
43
|
def resource_url(thumb = false)
|
|
30
44
|
return nil unless value
|
|
31
45
|
|
|
@@ -1,9 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/types/action_text'
|
|
2
4
|
require 'rails_admin/config/fields/types/active_record_enum'
|
|
3
5
|
require 'rails_admin/config/fields/types/active_storage'
|
|
4
6
|
require 'rails_admin/config/fields/types/belongs_to_association'
|
|
5
7
|
require 'rails_admin/config/fields/types/boolean'
|
|
6
8
|
require 'rails_admin/config/fields/types/bson_object_id'
|
|
9
|
+
require 'rails_admin/config/fields/types/composite_keys_belongs_to_association'
|
|
7
10
|
require 'rails_admin/config/fields/types/date'
|
|
8
11
|
require 'rails_admin/config/fields/types/datetime'
|
|
9
12
|
require 'rails_admin/config/fields/types/decimal'
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/association'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -7,6 +9,10 @@ module RailsAdmin
|
|
|
7
9
|
class BelongsToAssociation < RailsAdmin::Config::Fields::Association
|
|
8
10
|
RailsAdmin::Config::Fields::Types.register(self)
|
|
9
11
|
|
|
12
|
+
register_instance_option :filter_operators do
|
|
13
|
+
%w[_discard like not_like is starts_with ends_with] + (required? ? [] : %w[_separator _present _blank])
|
|
14
|
+
end
|
|
15
|
+
|
|
10
16
|
register_instance_option :formatted_value do
|
|
11
17
|
(o = value) && o.send(associated_model_config.object_label_method)
|
|
12
18
|
end
|
|
@@ -27,12 +33,8 @@ module RailsAdmin
|
|
|
27
33
|
true
|
|
28
34
|
end
|
|
29
35
|
|
|
30
|
-
def associated_primary_key
|
|
31
|
-
association.primary_key
|
|
32
|
-
end
|
|
33
|
-
|
|
34
36
|
def selected_id
|
|
35
|
-
bindings[:object].
|
|
37
|
+
bindings[:object].safe_send(association.key_accessor)
|
|
36
38
|
end
|
|
37
39
|
|
|
38
40
|
def method_name
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
module RailsAdmin
|
|
2
4
|
module Config
|
|
3
5
|
module Fields
|
|
@@ -22,6 +24,10 @@ module RailsAdmin
|
|
|
22
24
|
}
|
|
23
25
|
end
|
|
24
26
|
|
|
27
|
+
register_instance_option :filter_operators do
|
|
28
|
+
%w[_discard true false] + (required? ? [] : %w[_separator _present _blank])
|
|
29
|
+
end
|
|
30
|
+
|
|
25
31
|
register_instance_option :nullable? do
|
|
26
32
|
properties&.nullable?
|
|
27
33
|
end
|
|
@@ -31,7 +37,7 @@ module RailsAdmin
|
|
|
31
37
|
end
|
|
32
38
|
|
|
33
39
|
register_instance_option :pretty_value do
|
|
34
|
-
%(<span class="
|
|
40
|
+
%(<span class="badge bg-#{css_classes[form_value]}">#{labels[form_value]}</span>).html_safe
|
|
35
41
|
end
|
|
36
42
|
|
|
37
43
|
register_instance_option :export_value do
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'rails_admin/config/fields/types/belongs_to_association'
|
|
4
|
+
|
|
5
|
+
module RailsAdmin
|
|
6
|
+
module Config
|
|
7
|
+
module Fields
|
|
8
|
+
module Types
|
|
9
|
+
class CompositeKeysBelongsToAssociation < RailsAdmin::Config::Fields::Types::BelongsToAssociation
|
|
10
|
+
RailsAdmin::Config::Fields::Types.register(self)
|
|
11
|
+
|
|
12
|
+
register_instance_option :allowed_methods do
|
|
13
|
+
nested_form ? [method_name] : Array(association.foreign_key)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def selected_id
|
|
17
|
+
association.foreign_key.map { |attribute| bindings[:object].safe_send(attribute) }.to_composite_keys.to_s
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def parse_input(params)
|
|
21
|
+
return unless params[method_name].present? && association.foreign_key.is_a?(Array) && !nested_form
|
|
22
|
+
|
|
23
|
+
association.foreign_key.zip(CompositePrimaryKeys::CompositeKeys.parse(params.delete(method_name))).each do |key, value|
|
|
24
|
+
params[key] = value
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/base'
|
|
2
4
|
require 'rails_admin/support/datetime'
|
|
3
5
|
|
|
@@ -16,6 +18,16 @@ module RailsAdmin
|
|
|
16
18
|
params[name] = parse_value(params[name]) if params[name]
|
|
17
19
|
end
|
|
18
20
|
|
|
21
|
+
register_instance_option :filter_operators do
|
|
22
|
+
%w[default between today yesterday this_week last_week] + (required? ? [] : %w[_separator _not_null _null])
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def filter_options
|
|
26
|
+
super.merge(
|
|
27
|
+
datetimepicker_options: datepicker_options,
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
19
31
|
register_instance_option :date_format do
|
|
20
32
|
:long
|
|
21
33
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/types/string'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -7,16 +9,27 @@ module RailsAdmin
|
|
|
7
9
|
class Enum < RailsAdmin::Config::Fields::Base
|
|
8
10
|
RailsAdmin::Config::Fields::Types.register(self)
|
|
9
11
|
|
|
12
|
+
register_instance_option :filter_operators do
|
|
13
|
+
%w[_discard] +
|
|
14
|
+
enum.map do |label, value|
|
|
15
|
+
{label: label, value: value || label}
|
|
16
|
+
end + (required? ? [] : %w[_separator _present _blank])
|
|
17
|
+
end
|
|
18
|
+
|
|
10
19
|
register_instance_option :partial do
|
|
11
20
|
:form_enumeration
|
|
12
21
|
end
|
|
13
22
|
|
|
14
23
|
register_instance_option :enum_method do
|
|
15
|
-
@enum_method ||= bindings[:object].class.respond_to?("#{name}_enum") || bindings[:object].respond_to?("#{name}_enum") ? "#{name}_enum" : name
|
|
24
|
+
@enum_method ||= bindings[:object].class.respond_to?("#{name}_enum") || (bindings[:object] || abstract_model.model.new).respond_to?("#{name}_enum") ? "#{name}_enum" : name
|
|
16
25
|
end
|
|
17
26
|
|
|
18
27
|
register_instance_option :enum do
|
|
19
|
-
|
|
28
|
+
if abstract_model.model.respond_to?(enum_method)
|
|
29
|
+
abstract_model.model.send(enum_method)
|
|
30
|
+
else
|
|
31
|
+
(bindings[:object] || abstract_model.model.new).send(enum_method)
|
|
32
|
+
end
|
|
20
33
|
end
|
|
21
34
|
|
|
22
35
|
register_instance_option :pretty_value do
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/association'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -8,6 +10,10 @@ module RailsAdmin
|
|
|
8
10
|
# Register field type for the type loader
|
|
9
11
|
RailsAdmin::Config::Fields::Types.register(self)
|
|
10
12
|
|
|
13
|
+
register_instance_option :filter_operators do
|
|
14
|
+
%w[_discard like not_like is starts_with ends_with] + (required? ? [] : %w[_separator _present _blank])
|
|
15
|
+
end
|
|
16
|
+
|
|
11
17
|
register_instance_option :partial do
|
|
12
18
|
nested_form ? :form_nested_one : :form_filtering_select
|
|
13
19
|
end
|
|
@@ -18,7 +24,7 @@ module RailsAdmin
|
|
|
18
24
|
end
|
|
19
25
|
|
|
20
26
|
def selected_id
|
|
21
|
-
value.try
|
|
27
|
+
value.try(:id).try(:to_s)
|
|
22
28
|
end
|
|
23
29
|
|
|
24
30
|
def method_name
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/types/multiple_file_upload'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -12,6 +14,10 @@ module RailsAdmin
|
|
|
12
14
|
{resize_to_limit: [100, 100]}
|
|
13
15
|
end
|
|
14
16
|
|
|
17
|
+
register_instance_option :keep_value do
|
|
18
|
+
value.signed_id
|
|
19
|
+
end
|
|
20
|
+
|
|
15
21
|
register_instance_option :delete_value do
|
|
16
22
|
value.id
|
|
17
23
|
end
|
|
@@ -41,6 +47,10 @@ module RailsAdmin
|
|
|
41
47
|
ActiveStorageAttachment
|
|
42
48
|
end
|
|
43
49
|
|
|
50
|
+
register_instance_option :keep_method do
|
|
51
|
+
method_name if ::ActiveStorage.replace_on_assign_to_many
|
|
52
|
+
end
|
|
53
|
+
|
|
44
54
|
register_instance_option :delete_method do
|
|
45
55
|
"remove_#{name}" if bindings[:object].respond_to?("remove_#{name}")
|
|
46
56
|
end
|
|
@@ -48,6 +58,18 @@ module RailsAdmin
|
|
|
48
58
|
register_instance_option :eager_load do
|
|
49
59
|
{"#{name}_attachments": :blob}
|
|
50
60
|
end
|
|
61
|
+
|
|
62
|
+
register_instance_option :direct? do
|
|
63
|
+
false
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
register_instance_option :html_attributes do
|
|
67
|
+
{
|
|
68
|
+
required: required? && !value.present?,
|
|
69
|
+
}.merge(
|
|
70
|
+
direct? && {data: {direct_upload_url: bindings[:view].main_app.rails_direct_uploads_url}} || {},
|
|
71
|
+
)
|
|
72
|
+
end
|
|
51
73
|
end
|
|
52
74
|
end
|
|
53
75
|
end
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require 'rails_admin/config/fields/base'
|
|
2
4
|
|
|
3
5
|
module RailsAdmin
|
|
@@ -8,6 +10,10 @@ module RailsAdmin
|
|
|
8
10
|
# Register field type for the type loader
|
|
9
11
|
RailsAdmin::Config::Fields::Types.register(self)
|
|
10
12
|
|
|
13
|
+
register_instance_option :filter_operators do
|
|
14
|
+
%w[default between] + (required? ? [] : %w[_separator _not_null _null])
|
|
15
|
+
end
|
|
16
|
+
|
|
11
17
|
register_instance_option :view_helper do
|
|
12
18
|
:number_field
|
|
13
19
|
end
|