Sha256: 1ea7d9e5f0fc524e13ecab20b53a3b72ee774afbee3622729dc5b7812a855c2f

Contents?: true

Size: 787 Bytes

Versions: 3

Compression:

Stored size: 787 Bytes

Contents

require "active_reporter/dimension/base"

module ActiveReporter
  module Dimension
    class Category < Base
      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
        return filter_values if filtering?

        i = report.groupers.index(self)
        report.raw_data.keys.map { |x| x[i] }.uniq
      end

      def all_values
        relate(report.base_relation).pluck("DISTINCT #{expression}").map(&method(:sanitize_sql_value))
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
active_reporter-0.7.1 lib/active_reporter/dimension/category.rb
active_reporter-0.6.5 lib/active_reporter/dimension/category.rb
active_reporter-0.6.4 lib/active_reporter/dimension/category.rb