Class: ActiveReporter::Dimension::Enum
Instance Attribute Summary
Attributes inherited from Base
#name, #options, #report
Instance Method Summary
collapse
Methods inherited from Category
#group
Methods inherited from Base
#attribute, #expression, #extract_sql_value, #filter_values, #filtering?, #group, #grouping?, #initialize, #model, #null_order, #nulls_last?, #order, #order_expression, #params, #relate, #sort_desc?, #sort_order
Instance Method Details
#all_values ⇒ Object
14
15
16
|
# File 'lib/active_reporter/dimension/enum.rb', line 14
def all_values
enum_values.keys.tap { |values| values.unshift(nil) unless values.include?(nil) }.uniq
end
|
#filter(relation) ⇒ Object
18
19
20
21
22
23
24
25
26
27
28
|
# File 'lib/active_reporter/dimension/enum.rb', line 18
def filter(relation)
values = filter_values.map { |value| enum_values[value] }.uniq
query = case values
when [] then "1=0"
when [nil] then "#{expression} IS NULL"
else
in_values = "#{expression} IN (?)"
values.include?(nil) ? "#{expression} IS NULL OR #{in_values}" : in_values
end
relation.where(query, values.compact)
end
|
#group_values ⇒ Object
8
9
10
11
12
|
# File 'lib/active_reporter/dimension/enum.rb', line 8
def group_values
return filter_values if filtering?
all_values & report_values
end
|