Sha256: ca13e103717462d86dd1694d785d9767a3f5416ac7a3e8dc1b54f2ae0a1d730c

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

module Gitter

  class ColumnFilter < AbstractFilter

    attr_reader :columns, :values

    def initialize grid, name, opts = {}
      @columns = [opts[:column]||opts[:columns]||name].flatten
      @values = opts[:values]
      super
    end

    def apply driver, value = nil
      return driver if value.blank?

      attr_values = columns.inject({}){|memo,column| memo[column] = value; memo}
      driver.where attr_values, @opts
    end

    def counts driver = grid.filtered_driver
      if columns.size == 1
	#sort_hash ordered(driver).group(columns.first).count
	sort_hash driver.unordered.group(columns.first).count
      else
        super
      end
    end

    def distinct_values driver = grid.filtered_driver
      if columns.size == 1
        values || driver.unordered.distinct_values(columns.first).sort
      else
        super
      end
    end

    private
    def ordered driver
      order_attr = case order
          when true then columns.first
	  when String, Symbol then order
	  else nil;
          end
      s = driver.unordered
      s = s.order(order_attr) if order_attr
      s
    end
  end

end 

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
gitter-1.1.6 lib/gitter/filters/column_filter.rb
gitter-1.1.5 lib/gitter/filters/column_filter.rb
gitter-1.1.4 lib/gitter/filters/column_filter.rb
gitter-1.1.3 lib/gitter/filters/column_filter.rb