Sha256: e1f50671743e2199ba82c95072b678da522b3f9d55ac59afdc033f6d06efed07

Contents?: true

Size: 1.75 KB

Versions: 27

Compression:

Stored size: 1.75 KB

Contents

# frozen_string_literal: true

class Avo::Views::ResourceShowComponent < Avo::ResourceComponent
  include Avo::ResourcesHelper
  include Avo::ApplicationHelper

  def initialize(resource: nil, reflection: nil, parent_resource: nil, parent_model: nil, resource_panel: nil, actions: [])
    @resource = resource
    @reflection = reflection
    @resource_panel = resource_panel
    @actions = actions
    @parent_model = parent_model
    @parent_resource = parent_resource
    @view = :show
  end

  def title
    if @reflection.present?
      return field.name if has_one_field?

      reflection_resource.name
    else
      @resource.default_panel_name
    end
  end

  def back_path
    if via_resource?
      helpers.resource_path(model: params[:via_resource_class].safe_constantize, resource: relation_resource, resource_id: params[:via_resource_id])
    else
      helpers.resources_path(resource: @resource)
    end
  end

  def edit_path
    args = {}

    if via_resource?
      args = {
        via_resource_class: params[:via_resource_class],
        via_resource_id: params[:via_resource_id]
      }
    end

    helpers.edit_resource_path(model: @resource.model, resource: @resource, **args)
  end

  def destroy_path
    if params[:via_resource_class].present?
      helpers.resource_path(model: @resource.model, resource: @resource, referrer: back_path)
    else
      helpers.resource_path(model: @resource.model, resource: @resource)
    end
  end

  private

  # In development and test environments we shoudl show the invalid field errors
  def should_display_invalid_fields_errors?
    (Rails.env.development? || Rails.env.test?) && @resource.invalid_fields.present?
  end

  def has_one_field?
    field.present? and field.instance_of? Avo::Fields::HasOneField
  end
end

Version data entries

27 entries across 27 versions & 1 rubygems

Version Path
avo-2.15.3 app/components/avo/views/resource_show_component.rb
avo-2.15.3.pre.1.data.attrs.to.sidebar.items app/components/avo/views/resource_show_component.rb
avo-2.15.2 app/components/avo/views/resource_show_component.rb
avo-2.15.2.pre.1 app/components/avo/views/resource_show_component.rb
avo-2.15.1 app/components/avo/views/resource_show_component.rb
avo-2.15.0 app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.7.polytranslations1 app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.6.nosprockets app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.5.nosprockets app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.4.tosqlfix app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.3.jsbundling app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.2.tailwindcss app/components/avo/views/resource_show_component.rb
avo-2.14.3.pre.1.branding app/components/avo/views/resource_show_component.rb
avo-2.14.2 app/components/avo/views/resource_show_component.rb
avo-2.14.2.pre.1 app/components/avo/views/resource_show_component.rb
avo-2.14.1 app/components/avo/views/resource_show_component.rb
avo-2.14.1.pre.1 app/components/avo/views/resource_show_component.rb
avo-2.14.0 app/components/avo/views/resource_show_component.rb
avo-2.13.6.pre.2 app/components/avo/views/resource_show_component.rb
avo-2.13.6.pre.1 app/components/avo/views/resource_show_component.rb