Module: Spyro::ActionViewExtension::CollectionForHelper

Includes:
Output, Parser
Included in:
ApplicationHelper
Defined in:
lib/spyro/collections/outputs/csv.rb,
lib/spyro/collections/outputs/map.rb,
lib/spyro/collections/outputs/base.rb,
lib/spyro/collections/outputs/xlsx.rb,
lib/spyro/collections/parsers/base.rb,
lib/spyro/collections/outputs/table.rb,
lib/spyro/collections/parsers/array.rb,
lib/spyro/collections/parsers/model.rb,
lib/spyro/collections/outputs/fields.rb,
lib/spyro/helpers/action_view_extension.rb,
lib/spyro/helpers/action_view_extension.rb,
lib/spyro/collections/outputs/admin_table.rb,
lib/spyro/collections/outputs/flatui_table.rb,
lib/spyro/collections/outputs/inplace_table.rb,
lib/spyro/collections/outputs/bar_graph_table.rb,
lib/spyro/collections/parsers/active_record_relation.rb

Defined Under Namespace

Modules: Output, Parser, UniData

Instance Method Summary collapse

Instance Method Details

#collection_for(collection, options = {}, &block) ⇒ Object



386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
# File 'lib/spyro/helpers/action_view_extension.rb', line 386

def collection_for collection, options = {}, &block
  parser = nil

  Parser::Base.types.each do |klass_collection, klass_parser|
    parser = klass_parser.new collection, self, options if collection.is_a? klass_collection
  end

  return if parser.nil?

  output = "Spyro::ActionViewExtension::CollectionForHelper::Output::#{(options[:output] || :table).to_s.classify}".constantize

  if block_given?
    block.call parser
  end

  parser.parse
#        p parser.unicollection

  output.new(parser.unicollection, self, parser.class).render
end

#sortable_header(header) ⇒ Object



409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
# File 'lib/spyro/helpers/action_view_extension.rb', line 409

def sortable_header header
  if controller.ordered_keys.include? header
    params_dup = params.dup
    default_sort = controller.ordered_keys.first
    sort = params_dup.delete :sort
    rev_sort = params_dup.delete :rev_sort
    css_class = ''

    if sort
      css_class = "sort" if sort.to_sym == header.to_sym
    elsif rev_sort
      css_class = "sort rev" if rev_sort.to_sym == header.to_sym
    elsif default_sort.to_sym == header.to_sym
      css_class = "sort#{controller.ordered_options[:default] == :desc ? ' rev' : ''}"
    end

    params_dup[:rev_sort] = params_dup[:sort] = nil
    if css_class == "sort"
      params_dup[:rev_sort] = header
    else
      params_dup[:sort] = header
    end

    link_to header.to_s.humanize, url_for(params_dup), class: css_class
  else
    header.to_s.humanize
  end
end