class Margrid::Sorter

Public Class Methods

load(data) click to toggle source
# File lib/margrid/components.rb, line 23
def self.load(data)
  new data["sort"], data["direction"] if data.key? "sort"
end
new(column, direction) click to toggle source
Calls superclass method
# File lib/margrid/components.rb, line 3
def initialize(column, direction)
  super column.to_s, direction.to_s
end

Public Instance Methods

apply(relation) click to toggle source
# File lib/margrid/components.rb, line 7
def apply(relation)
  relation.reorder(sorting)
end
asc?() click to toggle source
# File lib/margrid/components.rb, line 19
def asc?
  !desc?
end
desc?() click to toggle source
# File lib/margrid/components.rb, line 15
def desc?
  direction == "desc"
end
dump() click to toggle source
# File lib/margrid/components.rb, line 27
def dump
  {"sort" => column, "direction" => direction}
end
inverted() click to toggle source
# File lib/margrid/components.rb, line 11
def inverted
  self.class.new(column, asc? ? :desc : :asc)
end

Private Instance Methods

sorting() click to toggle source
# File lib/margrid/components.rb, line 32
def sorting
  # FIXME: (Rails 4.2) Replace with
  #   relation.reorder(column => direction)
  # when order accepts the direction as strings.
  {column => asc? ? :asc : :desc}
end