Sha256: 2feca860b122f166636f8d596b485a3851b16babf2e0de1894ffdae4e6f2827f

Contents?: true

Size: 1.31 KB

Versions: 22

Compression:

Stored size: 1.31 KB

Contents

module Agilibox::SortingHelper
  def sortable_column(name, column, options = {})
    unless column.is_a?(Symbol)
      raise ArgumentError, "invalid column, please use symbol"
    end

    current_column, current_direction = sortable_column_order

    if current_column == column
      if current_direction == :asc
        name           = "#{name} ↓"
        new_sort_param = "-#{column}"
      end

      if current_direction == :desc
        name           = "#{name} ↑"
        new_sort_param = column
      end

      klass = "sort #{current_direction}"
    else
      new_sort_param = column
      klass          = "sort"
    end

    unless (url_params = options.delete(:url_params))
      url_params = (params.try(:permit!) || params).to_h.symbolize_keys
    end
    url_params[:sort] = new_sort_param

    html_options = {class: klass}.merge(options)

    link_to(name, url_params, html_options)
  end

  def sortable_column_order(sort_param = params[:sort])
    sort_param = sort_param.to_s

    if sort_param.present?
      if sort_param.start_with?("-")
        column     = sort_param[1..].to_sym
        direction  = :desc
      else
        column     = sort_param.to_sym
        direction  = :asc
      end
    end

    if block_given?
      yield(column, direction)
    else
      [column, direction]
    end
  end
end

Version data entries

22 entries across 22 versions & 1 rubygems

Version Path
agilibox-2.0.0 app/helpers/agilibox/sorting_helper.rb
agilibox-1.11.0 app/helpers/agilibox/sorting_helper.rb
agilibox-1.10.5 app/helpers/agilibox/sorting_helper.rb
agilibox-1.10.2 app/helpers/agilibox/sorting_helper.rb
agilibox-1.10.1 app/helpers/agilibox/sorting_helper.rb
agilibox-1.10.0 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.20 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.19 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.18 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.17 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.16 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.15 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.14 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.13 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.12 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.11 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.10 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.9 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.8 app/helpers/agilibox/sorting_helper.rb
agilibox-1.9.7 app/helpers/agilibox/sorting_helper.rb