class Basepack::Forms::Export

Attributes

query_form[R]

Public Class Methods

new(factory, chain, options = {}) click to toggle source
Calls superclass method Basepack::Forms::Base::new
# File lib/basepack/forms/export.rb, line 6
def initialize(factory, chain, options = {})
  super(factory, chain, options)
  @query_form = options[:query_form]
end

Public Instance Methods

collection() click to toggle source
# File lib/basepack/forms/export.rb, line 24
def collection
  @query_form ? @query_form.collection : []
end
csv_header(fields) click to toggle source
# File lib/basepack/forms/export.rb, line 69
def csv_header(fields)
  fields.flatten.map {|field| field.nested_label}
end
csv_row_for_resource(resource, fields) click to toggle source
# File lib/basepack/forms/export.rb, line 73
def csv_row_for_resource(resource, fields)
  with_resource(resource) do
    row = []
    fields.each do |nfields|
      if nfields.is_a? Array
        # nested form
        nform = nfields.first.form
        f = nform.nested_in
        values = f.multiple? ? f.value : [f.value]
        values = values.map {|v| nform.csv_row_for_resource(v, nfields)}
        nfields.zip(*values) {|nf, *v| row << v.join(',') }
      else
        f = nfields
        if f.polymorphic?
          row << resource.try(f.method_name) << resource.try(f.association[:foreign_type])
        else
          row << f.export_value
        end
      end
    end
    row
  end
end
default_partial() click to toggle source
# File lib/basepack/forms/export.rb, line 20
def default_partial
  'forms/export'
end
fields_from_params(params = nil) click to toggle source
# File lib/basepack/forms/export.rb, line 53
def fields_from_params(params = nil)
  if params.present?
    fields = []
    Array.wrap(params).each do |name|
      if name.is_a? Hash
        name.each {|n, v| fields << fields_for_field(visible_field(n.to_sym), v) }
      else
        fields << fields_for_field(visible_field(name.to_sym))
      end
    end
    fields
  else
    visible_fields.map {|f| fields_for_field(f)}
  end
end
path() click to toggle source
# File lib/basepack/forms/export.rb, line 16
def path
  view.polymorphic_path([:export, association_chain, resource_class].flatten)
end
schema_from_fields(fields) click to toggle source
# File lib/basepack/forms/export.rb, line 32
def schema_from_fields(fields)
  schema = { only: [], methods: [], include: {} }

  fields.each do |nfields|
    if nfields.is_a? Array
      # nested form
      f = nfields.first.form.nested_in
      schema[:include][f.name] = schema_from_fields(nfields)
    else
      f = nfields
      if f.polymorphic?
        schema[:methods] << f.method_name << f.association.foreign_type
      else
        schema[:only] << f.name
      end
    end
  end

  schema
end
schema_from_params(params = nil) click to toggle source
# File lib/basepack/forms/export.rb, line 28
def schema_from_params(params = nil)
  schema_from_fields(fields_from_params(params))
end
view=(view) click to toggle source
Calls superclass method
# File lib/basepack/forms/export.rb, line 11
def view=(view)
  super
  @query_form.view = view if @query_form
end

Private Instance Methods

fields_for_field(field, params = nil) click to toggle source
# File lib/basepack/forms/export.rb, line 99
def fields_for_field(field, params = nil)
  if field and !field.form.nested_in and !field.inverse_of_nested_in? and nform = field.nform
      nform.fields_from_params(params)
  else
    field
  end
end