Sha256: 42a653f66b0eaf84bad331dc055b8d561293f739a14fedc0bd3b80746472322e

Contents?: true

Size: 1.83 KB

Versions: 19

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

class Avo::BaseComponent < ViewComponent::Base
  include Turbo::FramesHelper

  def has_with_trial(ability)
    ::Avo::App.license.has_with_trial(ability)
  end

  private

  # Use the @parent_resource to fetch the field using the @reflection name.
  def field
    @parent_resource.get_field_definitions.find { |f| f.id == @reflection.name }
  rescue
    nil
  end

  # Fetch the resource and hydrate it with the model
  def association_resource
    resource = ::Avo::App.get_resource(params[:via_resource_class])
    model_class_name = params[:via_relation_class] || resource.model_class

    model_klass = ::Avo::BaseResource.valid_model_class model_class_name

    model = model_klass.find params[:via_resource_id]

    resource = ::Avo::App.get_resource_by_model_name model_klass if resource.blank?

    resource.dup.hydrate model: model
  end

  # Get the resource for the resource using the klass attribute so we get the namespace too
  def reflection_resource
    ::Avo::App.get_resource_by_model_name(@reflection.klass.to_s)
  rescue
    nil
  end

  # Get the resource for the resource using the klass attribute so we get the namespace too
  def reflection_parent_resource
    ::Avo::App.get_resource_by_model_name(@reflection.active_record.to_s)
  rescue
    nil
  end

  def parent_or_child_resource
    return @resource unless link_to_child_resource_is_enabled?
    return @resource if @resource.model.class.base_class == @resource.model.class

    ::Avo::App.get_resource_by_model_name(@resource.model.class).dup || @resource
  end

  def link_to_child_resource_is_enabled?
    return field_linked_to_child_resource? if @parent_resource

    @resource.link_to_child_resource
  end

  def field_linked_to_child_resource?
    field.present? && field.respond_to?(:link_to_child_resource) && field.link_to_child_resource
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
avo-2.26.1.pr1584.pre.1 app/components/avo/base_component.rb
avo-2.26.0 app/components/avo/base_component.rb
avo-2.25.0 app/components/avo/base_component.rb
avo-2.24.1 app/components/avo/base_component.rb
avo-2.24.0 app/components/avo/base_component.rb
avo-2.23.3.pre.1.pr1529 app/components/avo/base_component.rb
avo-2.23.2 app/components/avo/base_component.rb
avo-2.23.1 app/components/avo/base_component.rb
avo-2.23.0 app/components/avo/base_component.rb
avo-2.22.0 app/components/avo/base_component.rb
avo-2.21.3.pre.pr1489 app/components/avo/base_component.rb
avo-2.21.2.pre.pr1486 app/components/avo/base_component.rb
avo-2.21.1.pre.pr1484 app/components/avo/base_component.rb
avo-2.21.0 app/components/avo/base_component.rb
avo-2.21.1.pre.pr1476 app/components/avo/base_component.rb
avo-2.21.1.pre.issue1450 app/components/avo/base_component.rb
avo-2.21.1.pre.issue1444 app/components/avo/base_component.rb
avo-2.20.0 app/components/avo/base_component.rb
avo-2.19.0 app/components/avo/base_component.rb