Sha256: 9779a4eb8967949c5bde3dc3be4cee7ddd011c54a0ddcfa267fbadef0523949a

Contents?: true

Size: 812 Bytes

Versions: 3

Compression:

Stored size: 812 Bytes

Contents

require "active_reporter/dimension/category"

module ActiveReporter
  module Dimension
    class Enum < Category
      def group_values
        return filter_values if filtering?

        all_values & report_values
      end

      def all_values
        enum_values.keys.tap { |values| values.unshift(nil) unless values.include?(nil) }.uniq
      end

      private

      def enum_values
        model.defined_enums[attribute.to_s] || {}
      end

      def report_values
        return [] if report.raw_data.nil?

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

      def sanitize_sql_value(value)
        enum_values.invert[value]
      end

      def enum?
        true # Hash(model&.defined_enums).include?(attribute.to_s)
      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/enum.rb
active_reporter-0.6.5 lib/active_reporter/dimension/enum.rb
active_reporter-0.6.4 lib/active_reporter/dimension/enum.rb