Sha256: 40c0389bc60724b2c93cf7f4c92315aca4d733cde860047ac8d401843c5584a3

Contents?: true

Size: 738 Bytes

Versions: 1

Compression:

Stored size: 738 Bytes

Contents

module Repor
  module Dimensions
    class CategoryDimension < BaseDimension
      def filter(relation)
        values = filter_values
        query = "#{expression} IN (?)"
        query = "#{expression} IS NULL OR #{query}" if values.include?(nil)
        relation.where(query, values.compact)
      end

      def group(relation)
        order relation.select("#{expression} AS #{sql_value_name}").group(sql_value_name)
      end

      def group_values
        if filtering?
          filter_values
        else
          i = report.groupers.index(self)
          report.raw_data.map { |x, _y| x[i] }.uniq
        end
      end

      def all_values
        report.relation.pluck("DISTINCT #{expression}")
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
repor-0.0.1 lib/repor/dimensions/category_dimension.rb