Class: Repor::Dimensions::CategoryDimension
Instance Attribute Summary
#name, #opts, #report
Instance Method Summary
collapse
#expression, #extract_sql_value, #filter_values, #filtering?, #grouping?, #initialize, #null_order, #nulls_last?, #order, #order_expression, #params, #relate, #sort_desc?, #sort_order
Instance Method Details
#all_values ⇒ Object
24
25
26
27
28
|
# File 'lib/repor/dimensions/category_dimension.rb', line 24
def all_values
relate(report.base_relation).
pluck("DISTINCT #{expression}").
map(&method(:sanitize_sql_value))
end
|
#filter(relation) ⇒ Object
4
5
6
7
8
9
|
# File 'lib/repor/dimensions/category_dimension.rb', line 4
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
|
#group(relation) ⇒ Object
11
12
13
|
# File 'lib/repor/dimensions/category_dimension.rb', line 11
def group(relation)
order relation.select("#{expression} AS #{sql_value_name}").group(sql_value_name)
end
|
#group_values ⇒ Object
15
16
17
18
19
20
21
22
|
# File 'lib/repor/dimensions/category_dimension.rb', line 15
def group_values
if filtering?
filter_values
else
i = report.groupers.index(self)
report.raw_data.map { |x, _y| x[i] }.uniq
end
end
|