Sha256: aa8dfa044e44a1f989480af03b9300be75d639b2f8e7186dcd01c8b59bab293b

Contents?: true

Size: 1.83 KB

Versions: 9

Compression:

Stored size: 1.83 KB

Contents

# frozen_string_literal: true

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

  attr_reader :fields_by_panel, :has_one_panels, :has_many_panels, :has_as_belongs_to_many_panels

  def initialize(resource: nil, reflection: nil, parent_model: nil)
    @resource = resource
    @reflection = reflection

    split_panel_fields
  end

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

  def edit_path
    if via_resource?
      helpers.edit_resource_path(@resource.model, via_resource_class: params[:via_resource_class], via_resource_id: params[:via_resource_id])
    else
      helpers.edit_resource_path(@resource.model)
    end
  end

  def detach_path
    helpers.resource_detach_path(params[:resource_name], params[:id], @resource.model_class.model_name.route_key, @resource.model.id)
  end

  def destroy_path
    helpers.resource_path(@resource.model)
  end

  private
    def via_resource?
      params[:via_resource_class].present? and params[:via_resource_id].present?
    end

    def split_panel_fields
      @fields_by_panel = {}
      @has_one_panels = []
      @has_many_panels = []
      @has_as_belongs_to_many_panels = []

      @resource.get_fields.each do |field|
        case field.class.to_s
        when 'Avo::Fields::HasOneField'
          @has_one_panels << field
        when 'Avo::Fields::HasManyField'
          @has_many_panels << field
        when 'Avo::Fields::HasAndBelongsToManyField'
          @has_as_belongs_to_many_panels << field
        else
          @fields_by_panel[field.panel_name] ||= []
          @fields_by_panel[field.panel_name] << field
        end
      end

    end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
avo-0.5.0.beta9 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta8 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta7 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta6 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta5 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta4 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta3 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta2 app/components/avo/views/resource_show_component.rb
avo-0.5.0.beta1 app/components/avo/views/resource_show_component.rb