Sha256: 1fe25374a763b50c1f921f561c9f4a504c0bde00342a0b79cc78be234b925659

Contents?: true

Size: 1.31 KB

Versions: 13

Compression:

Stored size: 1.31 KB

Contents

require 'csv'

module Admin
  module Format

    protected

    def get_paginated_data
      items_per_page = params[:per_page] || @resource.typus_options_for(:per_page)
      offset = params[:offset] || 0
      @items = @resource.limit(items_per_page).offset(offset)
    end

    def generate_csv
      fields = @resource.typus_fields_for(:csv)

      data = ::CSV.generate do |csv|
        csv << fields.keys.map { |k| @resource.human_attribute_name(k) }
        @resource.find_each do |record|
          csv << fields.map do |key, value|
                   case value
                   when :transversal
                     a, b = key.split(".")
                     record.send(a).send(b)
                   when :belongs_to
                     record.send(key).try(:to_label)
                   else
                     record.send(key)
                   end
                 end
        end
      end

      send_data data, :filename => "export-#{@resource.to_resource}-#{Time.zone.now.to_s(:number)}.csv"
    end

    def export(format)
      fields = @resource.typus_fields_for(format).map(&:first)
      methods = fields - @resource.column_names
      except = @resource.column_names - fields

      get_paginated_data

      render format => @items.send("to_#{format}", :methods => methods, :except => except)
    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
brainsome_typus-4.0.0.beta13 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta12 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta11 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta10 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta9 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta8 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta7 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta6 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta5 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta4 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta3 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta2 app/controllers/concerns/admin/format.rb
brainsome_typus-4.0.0.beta1 app/controllers/concerns/admin/format.rb