Sha256: dff242abe04dc24c1bdcf825181f346a60baa0ca6cd534bebae6ed9ac7c78335

Contents?: true

Size: 1.31 KB

Versions: 19

Compression:

Stored size: 1.31 KB

Contents

module BMC::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

19 entries across 19 versions & 1 rubygems

Version Path
bmc-1.6.1 app/helpers/bmc/sorting_helper.rb
bmc-1.6.0 app/helpers/bmc/sorting_helper.rb
bmc-1.5.1 app/helpers/bmc/sorting_helper.rb
bmc-1.5.0 app/helpers/bmc/sorting_helper.rb
bmc-1.4.3 app/helpers/bmc/sorting_helper.rb
bmc-1.4.2 app/helpers/bmc/sorting_helper.rb
bmc-1.4.1 app/helpers/bmc/sorting_helper.rb
bmc-1.4.0 app/helpers/bmc/sorting_helper.rb
bmc-1.3.5 app/helpers/bmc/sorting_helper.rb
bmc-1.3.4 app/helpers/bmc/sorting_helper.rb
bmc-1.3.3 app/helpers/bmc/sorting_helper.rb
bmc-1.3.2 app/helpers/bmc/sorting_helper.rb
bmc-1.3.1 app/helpers/bmc/sorting_helper.rb
bmc-1.3.0 app/helpers/bmc/sorting_helper.rb
bmc-1.2.1 app/helpers/bmc/sorting_helper.rb
bmc-1.2.0 app/helpers/bmc/sorting_helper.rb
bmc-1.1.0 app/helpers/bmc/sorting_helper.rb
bmc-1.0.1 app/helpers/bmc/sorting_helper.rb
bmc-1.0.0 app/helpers/bmc/sorting_helper.rb