Class: Avo::Fields::HasBaseField
- Includes:
- Concerns::UseResource
- Defined in:
- lib/avo/fields/has_base_field.rb
Direct Known Subclasses
Instance Attribute Summary collapse
-
#attach_scope ⇒ Object
Returns the value of attribute attach_scope.
-
#description ⇒ Object
Returns the value of attribute description.
-
#discreet_pagination ⇒ Object
Returns the value of attribute discreet_pagination.
-
#display ⇒ Object
Returns the value of attribute display.
-
#hide_search_input ⇒ Object
Returns the value of attribute hide_search_input.
-
#link_to_child_resource ⇒ Object
readonly
Returns the value of attribute link_to_child_resource.
-
#scope ⇒ Object
Returns the value of attribute scope.
Attributes inherited from BaseField
#action, #as_avatar, #as_description, #as_label, #block, #computable, #computed, #computed_value, #default, #format_using, #help, #id, #index_text_align, #model, #null_values, #nullable, #panel_name, #readonly, #required, #sortable, #stacked, #updatable, #user, #view, #visible
Attributes included from Concerns::IsDisabled
Attributes included from Concerns::HasHTMLAttributes
Attributes included from FieldExtensions::VisibleInDifferentViews
#show_on_edit, #show_on_index, #show_on_new, #show_on_show
Instance Method Summary collapse
- #authorized? ⇒ Boolean
-
#component_for_view(view = :index) ⇒ Object
Adds the view override component has_one, has_many, has_and_belongs_to_many fields don’t have edit views.
- #default_name ⇒ Object
-
#field_label ⇒ Object
What the user sees in the text field.
-
#field_value ⇒ Object
The value.
- #frame_url ⇒ Object
- #has_own_panel? ⇒ Boolean
-
#initialize(id, **args, &block) ⇒ HasBaseField
constructor
A new instance of HasBaseField.
- #placeholder ⇒ Object
- #resource ⇒ Object
- #searchable ⇒ Object
- #target_resource ⇒ Object
- #turbo_frame ⇒ Object
- #visible_in_reflection? ⇒ Boolean
Methods included from Concerns::UseResource
Methods inherited from BaseField
#custom?, #custom_name?, #database_id, #fill_field, #hidden_in_reflection?, #hydrate, #model_errors, #name, #plural_name, #resolve_attribute, #to_permitted_param, #translation_key, #type, #value, #view_component_name, #visible?
Methods included from FieldExtensions::HasFieldName
Methods included from Concerns::HasDefault
Methods included from Concerns::IsDisabled
Methods included from Concerns::IsReadonly
Methods included from Concerns::IsRequired
Methods included from Concerns::HasHTMLAttributes
Methods included from FieldExtensions::VisibleInDifferentViews
#except_on, #hide_on, #only_on, #show_on, #show_on_create, #show_on_update, #visible_on?
Methods included from Concerns::IsResourceItem
#is_field?, #is_main_panel?, #is_panel?, #is_sidebar?, #is_tab?, #is_tab_group?, #is_tool?
Constructor Details
#initialize(id, **args, &block) ⇒ HasBaseField
Returns a new instance of HasBaseField.
14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/avo/fields/has_base_field.rb', line 14 def initialize(id, **args, &block) super(id, **args, &block) @scope = args[:scope].present? ? args[:scope] : nil @attach_scope = args[:attach_scope].present? ? args[:attach_scope] : nil @display = args[:display].present? ? args[:display] : :show @searchable = args[:searchable] == true @hide_search_input = args[:hide_search_input] || false @description = args[:description] @use_resource = args[:use_resource] || nil @discreet_pagination = args[:discreet_pagination] || false @link_to_child_resource = args[:link_to_child_resource] || false end |
Instance Attribute Details
#attach_scope ⇒ Object
Returns the value of attribute attach_scope.
8 9 10 |
# File 'lib/avo/fields/has_base_field.rb', line 8 def attach_scope @attach_scope end |
#description ⇒ Object
Returns the value of attribute description.
9 10 11 |
# File 'lib/avo/fields/has_base_field.rb', line 9 def description @description end |
#discreet_pagination ⇒ Object
Returns the value of attribute discreet_pagination.
10 11 12 |
# File 'lib/avo/fields/has_base_field.rb', line 10 def discreet_pagination @discreet_pagination end |
#display ⇒ Object
Returns the value of attribute display.
6 7 8 |
# File 'lib/avo/fields/has_base_field.rb', line 6 def display @display end |
#hide_search_input ⇒ Object
Returns the value of attribute hide_search_input.
11 12 13 |
# File 'lib/avo/fields/has_base_field.rb', line 11 def hide_search_input @hide_search_input end |
#link_to_child_resource ⇒ Object (readonly)
Returns the value of attribute link_to_child_resource.
12 13 14 |
# File 'lib/avo/fields/has_base_field.rb', line 12 def link_to_child_resource @link_to_child_resource end |
#scope ⇒ Object
Returns the value of attribute scope.
7 8 9 |
# File 'lib/avo/fields/has_base_field.rb', line 7 def scope @scope end |
Instance Method Details
#authorized? ⇒ Boolean
91 92 93 94 95 96 97 98 99 100 |
# File 'lib/avo/fields/has_base_field.rb', line 91 def method = "view_#{id}?".to_sym service = resource. if service.has_method? method service.(method, raise_exception: false) else true end end |
#component_for_view(view = :index) ⇒ Object
Adds the view override component has_one, has_many, has_and_belongs_to_many fields don’t have edit views
85 86 87 88 89 |
# File 'lib/avo/fields/has_base_field.rb', line 85 def component_for_view(view = :index) view = :show if view.in? [:new, :create, :update, :edit] super view end |
#default_name ⇒ Object
102 103 104 |
# File 'lib/avo/fields/has_base_field.rb', line 102 def default_name use_resource&.name || super end |
#field_label ⇒ Object
What the user sees in the text field
55 56 57 58 59 |
# File 'lib/avo/fields/has_base_field.rb', line 55 def field_label value.send(target_resource.class.title) rescue nil end |
#field_value ⇒ Object
The value
48 49 50 51 52 |
# File 'lib/avo/fields/has_base_field.rb', line 48 def field_value value.send(database_value) rescue nil end |
#frame_url ⇒ Object
40 41 42 43 44 45 |
# File 'lib/avo/fields/has_base_field.rb', line 40 def frame_url Avo::Services::URIService.parse(@resource.record_path) .append_path(id.to_s) .append_query(turbo_frame: turbo_frame.to_s) .to_s end |
#has_own_panel? ⇒ Boolean
75 76 77 |
# File 'lib/avo/fields/has_base_field.rb', line 75 def has_own_panel? true end |
#placeholder ⇒ Object
71 72 73 |
# File 'lib/avo/fields/has_base_field.rb', line 71 def placeholder @placeholder || I18n.t("avo.choose_an_option") end |
#resource ⇒ Object
32 33 34 |
# File 'lib/avo/fields/has_base_field.rb', line 32 def resource @resource || Avo::App.get_resource_by_model_name(@model.class) end |
#searchable ⇒ Object
28 29 30 |
# File 'lib/avo/fields/has_base_field.rb', line 28 def searchable @searchable && ::Avo::App.license.has_with_trial(:searchable_associations) end |
#target_resource ⇒ Object
61 62 63 64 65 66 67 68 69 |
# File 'lib/avo/fields/has_base_field.rb', line 61 def target_resource if @model._reflections[id.to_s].klass.present? Avo::App.get_resource_by_model_name @model._reflections[id.to_s].klass.to_s elsif @model._reflections[id.to_s].[:class_name].present? Avo::App.get_resource_by_model_name @model._reflections[id.to_s].[:class_name] else Avo::App.get_resource_by_name id.to_s end end |
#turbo_frame ⇒ Object
36 37 38 |
# File 'lib/avo/fields/has_base_field.rb', line 36 def turbo_frame "#{self.class.name.demodulize.to_s.underscore}_#{display}_#{frame_id}" end |
#visible_in_reflection? ⇒ Boolean
79 80 81 |
# File 'lib/avo/fields/has_base_field.rb', line 79 def visible_in_reflection? false end |