Module: AdminCore::ResourceManager::HasManyFields

Extended by:
ActiveSupport::Concern
Included in:
BaseResourceManager
Defined in:
lib/admin_core/resource_manager/has_many_fields.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.field_buildersHash<Symbol, AdminCore::ResourceFieldBuilder>

Returns:



13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/admin_core/resource_manager/has_many_fields.rb', line 13

class_methods do
  def field_builders
    @field_builders ||= {}
  end

  def field_names_for(page)
    @page_fields ||= {}
    @page_fields[page] || []
  end

  private

  # @param name [Symbol]
  # @param type [Symbol, Class] built-in type name or a resoure field class
  # @param options [Hash]
  def define_field(name, type, options = {})
    field_builders[name] = AdminCore::ResourceFieldBuilder.new(name, type, options)
  end

  # @param pages [Array<Symbol>]
  # @param fields [Array<Symbol>]
  def register_fields_for(*pages, fields)
    @page_fields ||= {}
    pages.each do |page|
      @page_fields[page] = fields
    end
  end
end

.field_names_for(page) ⇒ Array<Symbol>

Parameters:

  • page (Symbol)

Returns:

  • (Array<Symbol>)


13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/admin_core/resource_manager/has_many_fields.rb', line 13

class_methods do
  def field_builders
    @field_builders ||= {}
  end

  def field_names_for(page)
    @page_fields ||= {}
    @page_fields[page] || []
  end

  private

  # @param name [Symbol]
  # @param type [Symbol, Class] built-in type name or a resoure field class
  # @param options [Hash]
  def define_field(name, type, options = {})
    field_builders[name] = AdminCore::ResourceFieldBuilder.new(name, type, options)
  end

  # @param pages [Array<Symbol>]
  # @param fields [Array<Symbol>]
  def register_fields_for(*pages, fields)
    @page_fields ||= {}
    pages.each do |page|
      @page_fields[page] = fields
    end
  end
end

Instance Method Details

#build_filters(params) ⇒ Array<AdminCore::ResourceFilter::Base>

Parameters:

  • params (ActionController::Parameters)

Returns:



50
51
52
53
54
# File 'lib/admin_core/resource_manager/has_many_fields.rb', line 50

def build_filters(params)
  self.class.filter_builders.map do |filter_builder|
    filter_builder.build(self, params[:filter] || {})
  end
end

#permitted_field_names_for(page) ⇒ Array<Symbol>

Parameters:

  • page (Symbol)

Returns:

  • (Array<Symbol>)


44
45
46
# File 'lib/admin_core/resource_manager/has_many_fields.rb', line 44

def permitted_field_names_for(page)
  field_builders_for(page).map(&:permitted_field_name)
end