Sha256: 811dc62152c0971e5f9981f5c9979c1f669942004bd703101731d5309cf1643a

Contents?: true

Size: 1.28 KB

Versions: 4

Compression:

Stored size: 1.28 KB

Contents

# frozen_string_literal: true

module Lipstick
  module Helpers
    module SortableHelper
      include ActionView::Helpers

      def sortable_link(name, param_name = nil)
        param_name ||= name.parameterize.underscore.downcase
        direction = Lipstick::Sortable.direction(params[:direction])
        opposite_direction =
          Lipstick::Sortable.opposite_direction(params[:direction])

        if params[:sort_by] == param_name
          sortable_active_link(name, param_name, direction, opposite_direction)
        else
          link_to name, request.query_parameters
                               .merge(sort_by: param_name, direction: direction)
        end
      end

      private

      def sortable_active_link(name, param_name, direction, opposite_direction)
        link_to request.query_parameters.merge(sort_by: param_name,
                                               direction: opposite_direction) do
          concat("#{name} ")
          concat(
            content_tag('div', class: 'glyphicon') do
              content_tag('div',
                          class: "glyphicon-chevron-#{icon(direction)}") do
              end
            end
          )
        end
      end

      def icon(direction)
        direction == 'asc' ? 'up' : 'down'
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
aaf-lipstick-4.4.0 lib/lipstick/helpers/sortable_helper.rb
aaf-lipstick-4.3.0 lib/lipstick/helpers/sortable_helper.rb
aaf-lipstick-4.2.0 lib/lipstick/helpers/sortable_helper.rb
aaf-lipstick-4.1.0 lib/lipstick/helpers/sortable_helper.rb